15
I don't think it can be done at compile time.
however, it can be done at runtime.
I have created an abstract class 'Disposable' (which implements IDisposable, and implements the Disposable pattern).
In the finalizer, I issue an Assert when the finalizer is called, and the object has not been disposed.
I've based this on an article of Ian Griffiths:
http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking