Well, Open Web Studio could probably do what you need with two modules.
One could simply grab the ip address of the user, look up it's geo data and log it into a session cookie. The module can be "invisible" and placed on every page. You can also set it so that it doesn't do the lookup if the cookie already has data, a way to save performance.
Second module could check if a user is logged in, if so it could lookup their profile data, if empty region then fill it in from the session cookie from the first module, and if already filled in then do nothing. You could actually even set another cookie that states the region has been set in the profile already and give it a long term expiration date, again saving performance with quick transparent checks.
It would all depend on users allowing cookies, but most will at least allow session cookies for session variables if you don't want to use regular cookies that can be stored long past the current session. When I did the autologin module, I stored the data to a cookie that way the whole lookup could be avoided until the cookie expired a year from the initial login.
OWS has been used to create custom registration pages, too, but I have to tell you that what I've read in the forums that can be a tricky task. But, at least there is a lot of info and I believe at least one example on how to do that. You can seriously do almost anything, it's not just for custom forms, OWS is really amazing with tons of functions, if/then/else logic, can handle custom paging set at the database level, any query, and has security built in such as sql injection attack defenses, etc. Don't hear much about it here, but the R2i guys are a group of exceptional professionals with an amazing open source module. I still think ListX was a bit easier to learn, and switching to OWS pretty much brought me back to square one on the learning curve. Still, it could handle what need.