Best practice to separate content per city
You said you already had a taxonomy vocabulary holding the countries and cities. This sounds like a good start. You can add a term reference field to the user profile, so that users can select their locations from the same vocabulary.

One idea (which could work without coding) is that you use Entity Reference for referencing terms from this vocabulary on nodes. Then you can use Entityreference prepopulate to fill out the reference fields automatically based on a value in the URI's query string. As the last step you will need to render the content creation links and make sure the URIs contain the taxonomy term selected on the current user's profile. You can do that e.g. with Page Manager alongside with Panels by adding a New custom content pane, where you can use keywords from the User context which you need to add manually to the page.