This white-paper is the best overview I've ever seen on COM threading models, ranging from apartments to CoWaitForMultipleHandles to synchronization-contexts:
http://msdn.microsoft.com/library/en-us/dncomser/html/comthread.asp
Read it and weep. (For those that still program in COM, that is. Haha.)