There are two Microsoft methods that you can take to achieve this. One is to just have a terminal server (not really virtualising but hey you get that
) The other option is also within the Terminal Services Role. Basically what will happen is you create a Virtual Desktop for each User and from a thin client they login into their own Virtual Desktop.
The first option requires a lower grade of server hardware to run properly as opposed to the high grade hardware required by a Virtual Desktop, in the instance of a Virtual Desktop it is like running multiple virtual machines. Generally unless you're going to splash big cash i would suggest looking into just using a Terminal Server.
Another thing you might find interesting is Microsoft System Center Virtual Machine Manager (SCVMM) which enables you to easily administer VM's on many hosts from one simple console. This also has features like P2V (Physical to Virtual) Conversion and i have a vagure memory that you can create the aforementioned Virtual Desktops in here as well. Microsoft System Center Virtual Machine Manager
Hope some of that helped, if you have any questions feel free to ask.