How to create Country, State, City and Zip Code field in D6
Try the Hierarchical Select Module which works with Taxonomy Terms, Menus, User Profile Fields, Generic Lists and External APIs.  The field types you use for storage would not matter.

There are demos available on the module developer's blog.

Warning: In the case of City Names and Zip Codes there is no hierarchy (at least in the States).  Many Zip Codes have multiple city names, many cities have multiple Zip Codes. For any hope of keeping this all current you'd have to use an external API.