1. Create a virtual machine image of the operating system of your choice like [this example](https://padrao.sarava.org/boxes/).
2. Setup basic X11 environment with automatic login and startup programs.
3. Configure your hypervisor to hide icons and additional decorations around the virtual machine.
4. Setup key bindings on your window manager to start/resume and stop/suspend the virtual machine.
Debian desktop
--------------
When using a debian virtual machine as a virtual desktop, consider the following:
apt-get install lightdm ratpoison plymouth
Make sure to configure `/etc/lightdm/lightdm.conf` with something like
autologin-user=vagrant
autologin-user-timeout=0
If using VirtualBox, you might also want to try [virtualbox-guest-x11](https://packages.debian.org/stable/virtualbox-guest-x11).
Features
--------
* Good security through isolation.
* Improved start/stop of your application by using virtual machine suspend/resume.
* Minor performance penalties while running the virtual machine.
Limitations
-----------
* Memory and disk consumption.
* Clipboard might still be available to the virtual environment, see [this discussion](http://theinvisiblethings.blogspot.com.br/2011/04/linux-security-circus-on-gui-isolation.html).
Future
------
* Automated expendable snapshots for one-time-use virtual machines.
* Automated recipes (puppet/ansible).
* Vagrant integration for fast provisioning of golden images.