there are two ways a geo targeted ad can get triggered, the searchers location or geo indicators a searcher specifies.
so if someone in London searches for hotels, your London geo targeting for "hotels" will roll into the possible PPC results.
and if someone in Scotland searches for "London hotels", your London geo targeting for "hotels" will roll as well.
it's possible you're seeing the latter case for those folks you say aren't located in the target geo zone.
so you need to decide if remote searchers are desirable targets if they include geo/location indicators in their query. these searchers might be something you want, in that case, now you know why you're getting remote searchers. if you don't want them, the problem is harder to solve. to avoid them, you'd need to add negative keywords or switch to exact match, both cases will also eliminate searchers in the targeted local area, as well as the remotes (add london as a negative, for instance, local and remote searchers with london in their query are blocked). so consider your choices carefully.
i'm going to request that G offer the option to NOT include remote traffic that has searches containing geo-indicators - so adwords users can choose, in a geo targeted campaign, to not also snag up potential searchers outside the target area via search term geo-indicators. i'll post it in the features I'd like to see thread here, but G gets to decide what to do with my request.
G knows ip locating isn't perfect, so they've assumed we'd want geo-indicated remote traffic - I'd like to have the choice when configuring any geo-targeted campaign (even if G chooses to make it the default to include remote-geo-indicated traffic).