Hi. This may be a rather late reply, but I hope you can get some good info anyway.
You can browse through the samples from this link:
You may have done this but you may notice that what you needed to do first is to create a COM wrapper, or a proxy, to consume the COM object as if a .NET programmable object. (You can't directly "inherit" the COM type as it's not CLR). And you may have already realized that this is also what VS will produce when you try to add a COM reference to your .NET project: an Interop DLL.
I cannot remember how the COM object is instantiated inside the Interop dll (thru Marshal class?), but I do know that one of the ways you can create a COM instance is via the Activator class. And how ever you instantiate a COM object, you will always get a runtime callable wrapper (RCW), often you only see it as System.Object type. This is "the" object that you need to dispose, and you can do it via the Marshal.ReleaseComObject(). This would dispose, so to speak, the COM object, but its not a guarantee it will solve the memo leak issue since we do not know if the COM object itself is properly deallocating whatever resources it used.