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
Side effect of this solution: I lose all of my Unity appearance settings.
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?