.NET Micro Framework uses a small version of the .NET Common Language Runtime, or CLR. While this is similar to a VM, it is better described as an environment for running managed code. The CLR manages memory, takes care of type checking, and in general provides a number of services that make the code you write more straightforward, and less prone to things like memory leaks.
On top of the CLR, you have a set of class libraries that provide the basic functionality for everything from networking to interfacing with hardware.
The official .NET Micro Framework site has a good statement on the Why of NETMF here:
Another advantage of .NET Micro Framework is that you can use the same code and skills to target multiple hardware platforms from multiple vendors (things like FEZ Panda, Domino, and Mini from GHI, and the Netduino line from Secret Labs), and with the availability of the porting kit, and source availability, those who want to port NETMF to another hardware platform are free to do so, and the code written on top of NETMF will then run on that new platform as well.
But ultimately, I think the biggest advantage to .NET Micro Framework is one of productivity. Being able to use the same language and set of tools for applications that span from the cloud and the desktop, to web applications, and all the way down to the embedded world, is a very powerful thing
Hope that helps.