As Alexander says this seems a quite complex requisite, but i think you could do this with multiple maps. Personally i would not go for a one map solution.
We are using conditional shows to get different representations for different levels.
Consider using the Cluster map, for multiple district and multiple city representation, and when you go to the zip code representation, toggle to the heat map.
I'm also not getting your heat map need. What would specify the heat distribution on the city?
I can't speak for all the solutions you mention, but this functionality is definitely possible in QlikMaps. This functionality is part of almost every QlikMaps demo, and several QlikMaps customers do exactly what you mention. While there are several ways to accomplish this, the easiest way is probably to do what Miguel mentions: use multiple maps with conditional show criteria.
I am unable to get your contact info from here, but if you fill out the contact form on http://qlikmaps.com, somebody will get back to you with more details.