Golfer, how close of a radius do you need? About as close as you can get without using a warrant or subpoena to the ISP is to use traceroute and look at the router names. Most providers will include the city and state somewhere in the name of each device the packet goes through. It can be a bit cryptic sometimes, but I have had a fairly good success rate with it, especially when whois doesn't provide enough information.
As an example, here are some hops from my PC to one of the HTC servers:
5 tbr2-p013901.cgcil.ip.att.net (12.123.210.17) 47.759 ms 46.961 ms 48.536 ms
6 tbr2-cl7.sl9mo.ip.att.net (12.122.10.46) 48.104 ms 53.957 ms 44.023 ms
7 tbr1-cl24.sl9mo.ip.att.net (12.122.9.141) 63.489 ms 44.511 ms 44.473 ms
8 tbr2-cl6.dlstx.ip.att.net (12.122.10.90) 40.362 ms 42.098 ms 39.198 ms
9 br2-a3120s9.dlstx.ip.att.net (12.123.16.213) 40.269 ms 39.137 ms 49.582 ms
10 mdf1-gsr12-1-pos-6-0.dal1.attens.net (12.122.255.78) 39.170 ms 38.685 ms 39.775 ms
11 mdf1-bi8k-1-eth-1-4.dal1.attens.net (63.241.192.42) 44.722 ms 402.591 ms 44.485 ms
cgcil is Chicago, sl9mo is St. Loius and dlstx is Dallas. You can usually get to the nearest large city with a traceroute.
If you're using Windows, the command is tracert.
Oh, and if you're worried about tipping off the perp, you can just traceroute to an address in the same netblock. He'll never get a packet. Just make sure he doesn't have the whole netblock registered.