A lot of the circular dependencies come from non-essential parts of packages. For example: there are packages which build their manpages from TeX documents. To build TeX you need even more packages, but the manpages are non-essential and can be skipped for bootstrapping.
As pointed out elsewhere, Debian is working explicit bootstrap dependencies, which for each package will indicate the minimal dependencies required to build a useful (though not necessarily Debian-compliant) package. Hopefully these can be made almost completely loop-free so eventually bootstrapping can be automated.