In SDL Tridion 2009, you need to use the TOM (Interop) API to create new items, this differs from the TOM.NET API (since the TOM.NET API in 2009 was read-only).

So you have to work from the `TDSE` like this:

<!-- language: lang-cs -->

    using Tridion.ContentManager.Interop.TDS;  
    using Tridion.ContentManager.Interop.TDSDefines;
    using ItemType = Tridion.ContentManager.Interop.TDSDefines.ItemType;

    {
      TDSE tdse = new TDSE();
      tdse.Impersonate(@"domain\user");
      tdse.Initialize();

      Schema schema = (Schema)tdse.GetObject("tcm:1-3-8", EnumOpenMode.OpenModeView, Constants.URINULL, XMLReadFilter.XMLReadData);
      Component comp = (Component)tdse.GetNewObject(ItemType.ItemTypeComponent, "tcm:1-2-2", "tcm:0-1-1");

      comp.Title = "new title";
      comp.Schema = schema;
      // etc. follow the examples in the TOM API guide, don't mix this with the TOM.NET API

      comp.Save(true);
      if (comp.Info.IsCheckedOut)
      {
         comp.CheckIn();
      }

      ReleaseCom(schema);
      ReleaseCom(comp);
      ReleaseCom(tdse);
    }
    
    private static void ReleaseCom(object instance)
    {
      if (instance != null)
      {
        try
        {
          Marshal.ReleaseComObject(instance);
        }
        catch
        {
          /* log potential memory leak */
        }
      }
    }

You really need to only look at the TOM API guide, and don't even include the TOM.NET DLLs as references in our project, since that will just confuse you.