That's a hard question. You could call mock.Object.Dispose() directly, but if that's not good enough you could try using weak a reference (
http://msdn.microsoft.com/en-us/library/system.weakreference.aspx). The weak reference won't prevent the object from being garbage collected. However, I'm not sure if the internal interceptor keeps a reference to the object, in which case the whole weak reference idea won't work either. You might have to resort to hand-rolling your mock this time.
There are some issues with your whole approach. First, even if you can let the garbage collector to reclaim your object, there's no way to guarantee
when it will be reclaimed (it happens in another thread). I think you might be wasting your time unit testing the .NET framework instead of just testing your code (this is an anti-pattern). You should be keeping your tests simple. In this case, just call .Dispose() directly and check that it did what it's supposed to. Just have faith that the .NET interpreter will operate as the documentation says.