On current Debian versions, you can get a list of explicitly-installed packages with
For those running ancient versions of Debian where
apt-mark showmanual doesn't exist, or if you want to perform additional selections, you can use aptitude.
aptitude search '~i !~M' -F %p >package.list
~i matches installed packages;
!~M omits the packages that were installed automatically as a dependency of some other package.
-F %p changes the output format to include only the package name.
You can later install those packages with
apt-get install $(cat package.list)
Debian squeeze doesn't have
apt-mark showmanual, but it has
apt-mark showauto which lists automatically-installed packages. If you use this, you can list all packages on the old system with
dpkg --get-selections >package.list, restore all of these, and then mark the automatic packages with
apt-mark markauto. For your use case (32-bit to 64-bit), this approach is likely to leave a few libraries marked as manual, because they have different names under different architectures.
Note that if the use case is to reproduce an identical installation, rather than keep the set of packages but change the architecture, there is now a tool called apt-clone (distributed in Debian since wheezy) that does everything automatically.