Whenever I connect an external display to the DSub port of my laptop before booting into Ubuntu, something goes wrong in Unity to cause the exact same problem as described here: After logging in, there's a black screen and my cursor, nothing else! in Ubuntu 12.10 Rebooting without the display connected does not fix it.
A once-off fix is to do this:
sudo apt-get install ppa-purge sudo ppa-purge ppa:unity-team/staging sudo apt-get update sudo apt-get install --reinstall ubuntu-desktop sudo apt-get install unity
or, much quicker, this:
unity --reset sudo service lightdm restart
My problem, however, is that I need to boot with the external display connected quite often. Who knows what goes wrong inside Unity and/or how to fix it permanently?