Country based city list selection
You can use the Address Field module.  To do just the country and city, you will have to define a plugin.  Look in the addressfield/plugins/format directory for examples.

To add the cities, you will have to define a list of cities for each country in the plugin.  You can then format the list and add it to your plugin and you should be good to go.

One advantage of using the Address Field module is that if you do not define a list of cities for a country, users will still be able to input the city themselves.