Для форм Windows требуется, чтобы [STAThread] присутствовал в главной точке входа. Он будет работать только в однопоточной квартире. Вы можете использовать свой COM-объект STA в потоке пользовательского интерфейса в Windows Forms без проблем.
Типичный подход для этого - создать собственный поток и установить для Thread.ApartmentState значение MTA (хотя это значение по умолчанию) для отдельного потока. Инициализируйте и используйте ваши MTA-резьбовые COM-компоненты из этого потока.
ThreadStart threadEntryPoint = ...;
var thread = new Thread(threadEntryPoint);
thread.ApartmentState = ApartmentState.MTA; // set this before you call Start()!
thread.Start();