The .NET VM would be pretty much useless on other platforms. It is tied to Windows and it would be pretty hard to rewrite. But standard libraries would be different story.
The garbage collector for example would be very interesting to peruse. Sure threading and synchronization code would be differ but these have been emulated on Linux before to good effect, I don't see any serious barriers there.
Microsoft has released the source for a .Net VM (CLR) in the past:
http://en.wikipedia.org/wiki/Shared_Source_Common_Language_I...
It supported FreeBSD and MacOS X. This suggests it would not be impossible for them to make a multiplatform .NET in the future.