topcoder - 6:40 pm on Jul 2, 2012 (gmt 0)
It's not possible to be 100% accurate. Just recently, I took a trip on Delta Airlines in the US. They have WIFI enabled on some of the planes now, it's actually the first time I've been on a plane with Semi Free WIFI.
Anyway, while I surfing on the WIFI and while the plane was travelling 550 miles per hour, my IP that I was assigned stayed the same through six different states.
I checked it many times through the trip using unlocktheinbox.com, never changed in over 2000 miles.
The time code seems like a much more solid predictor, unless the person is travelling with a laptop that doesn't adjust time. Most newer cell phones adjust time now based on GPS locations.
But I agree the best way is just to ask the user.