If you have everything installed from the standard repositories you can record your package selections with:
sudo apt-get install debconf-utils
sudo dpkg --get-selections '*' > selection.dpkg
sudo debconf-get-selections > selection.debconf
Then you can replicate that package selection on a fresh install with:
sudo debconf-set-selections < myselection.debconf
sudo dpkg --set-selections < myselection.dpkg
sudo apt-get -u dselect-upgrade.
If you also backup your
/home and other area where you have config or files that don't come from a package, you should be able to clone a machine pretty quickly.
This won't work if you are skipping between releases though, so instead I just keep a manual list of everything I install and all config that I change. If you keep this in an ordered way you can bring a new machine up to spec pretty quick anyway (and as you are doing things "manually" you can skip packages/steps that are no longer relevant so that you aren't carrying more cruft than you need to from one install to the other). I used such a list when I installed Ubuntu on my recent netbook purchase. Obviously you need the backup of
/etc as well but you should have good backups already anyway.