I've hosed my own system several times over. Sometimes it's not your fault, but you should pick the best tools for managing your packages (I'm surprised no one mentioned "aptitude" yet! You get to examine package conflicts and decide to accept/reject certain actions.)
a brief tale of shared blame:
I surf through my packages and see a newer version of libc6. Huh, okay--let's install it. No new packages listed (I should have checked the "removed packages"). Go!
Then, I realize in horror that almost everything on my system has been uninstalled. Turns out all the dependency information did not carry over to the new libc package. It cost me a few hours to dig through the cache, generate a list of packages and run "apt-get" on the list.