I have not implemented this..but my $.02.
You can consider implementing a Windows station. A windows station is basically a security boundary to contain desktops and processes
Only one Windows Station is permitted for Console Logon (Winsta0)
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682573(v=vs.85).aspx
You can achieve, process, Windows Object, and ACL Isolation on a per station basis.
Some API functions used in Windows Station are listed here:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687107(v=vs.85).aspx
An Overview of Sessions,Desktops and Windows Stations.
http://blogs.technet.com/b/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx
There is a CodeProject example here with source:
http://www.codeproject.com/Articles/21352/Virtual-Desktop-A-Simple-Desktop-Management-Tool
I would recommend using API Monitor to debug Win32 API Calls
http://www.rohitab.com/apimonitor
hth