We use castle for interception, and castle uses code generation (a derived class of the mocked type).
So, non-overridable methods are not mock-able, unless they are from a class that inherits from MarshalByRefObject, in which case Moq switches automatically to remoting proxies, allowing you to mock pretty much everything.