Castle DynamicProxy
The DynamicProxy project was created to overcome the CLR's proxy (in)capabilities. There are proxies in the CLR world, but they can be considered a bit intrusive as they force one to extend MarshalByRefObject or ContextBoundObject.
You can use DynamicProxy to generate lightweight proxies on the fly for one or more interfaces or even concrete classes (but only virtual methods will be intercepted).