If the issue is actually around Cities, States, Countries, then you may want to take a look at REEgion Select, a third party add-on by @Derek Hogue who answers a number of questions here.
If your issue is really more about being able to base one field of the selection of another, than take a look at Query Field. I haven't used it, yet, but do have a project that I've been looking at it for.
Distributive classification, tagging, can be more flexible and responsive to your needs, while still allowing for flexible filtering of data. In terms of data entry, I think tags are probably easier, or a mixture of tags and categories (unless you are literally dealing with locations*).
If you are actually dealing with locations, than I'd recommend something that does assistive auto-completes. Like just allow the user to enter a postal code, then recommend city, state, region, country from that, but allow them to be modifiable.