Why is the city, state, country incorrect?
GPSPhotoLinker offers a choice between google.com [maps.google.com] (default), Microsoft's Terraserver [terraserver-usa.com] and geonames.org to fetch the city, state, and country information based on the latitude and longitude (a process known as reverse geocoding [wikipedia.org]). Usually any of these services work fairly well although some work better in different parts of the world than others. It's a good idea to test results from each of these.
Photo preferences allow you to select and sample the reverse geocoder services.
By default, GPSPhotoLinker uses google.com [maps.google.com]. Google appears to use boundary data to generate their results.
You can also select Microsoft's Terraserver [terraserver-usa.com]. The Terraserver database does not include actual boundary data describing the shapes of administrative boundaries. Instead, the database has a collection point data describing city locations and an estimate of the city radius based on population. Terraserver then uses an algorithm to find the "nearest big city" to a given latitude an longitude. This means that near administrative boundaries or in areas with low population density, the returned result might be inaccurate.
You can select geonames.org to fetch the city, state, country information. Geonames started with the same point data set as Terraserver, but appears to be slowly acquiring boundary data and may eventually return results superior to Terraserver.
GPSPhotoLinker also allows you to manually make changes to or enter the city, state, country and location tags on any number of selected photos.
GPSPhotoLinker preferences for metadata allows you to choose whether to save altitude, city, state and/or country data to a photo, whether to overwrite these tags if they exist, and to sample the Terraserver and Geonames databases.