How to validate country and city input fields properly?

Either cldr or libpostal ..
https://github.com/openvenues/libpostal

Once you have the reference data set/source, building the validation on a field or using a select (like live_select) should be pretty straightforward ..
Hope this helps.