I'm not asking for marshalling arbitrary interfaces - all that LabVIEW would have to do is to marshall a generic IDispatch pointer. Once the client process has the IDispatch pointer, then the third-party application is responsible for all handling the QueryInterface calls and stuff. I can do the equivalent marshalling of a generic interface in C++ in about three lines of code (Line 1: AddRef, Line 2: cast to LPDISPATCH, Line 3: return to caller).
I'm definitely a LabVIEW newbie, but I'm a COM old hat, so I know exactly what needs to be done, just not how to do it.
[edited] I should also add that when I try to do the same thing locally through VI Server (i.e., have a client VI fetch an arbitrary COM interface from a Refnum indicator in another VI in the same process with the Ctrl Val.Get command), it works just fine. But I can't get the equivalent functionality to work across processes through the ActiveX Server.