The databases of IP address to location are based on many things. They are, as someone else pointed out, based on ISP location. But the are also based on some shopping sites (and I can't tell you which, and "privacy policies" may have changed this). So, if you have a static or at least stable IP address, and you shop on certain websites, your location may be updated -- eventually.
Alternatively, you could try identifying and contacting the location database maintainers and seeing if you can provide your location. (And again, you need a static or stable IP address.)
If you don't have a stable IP address, you really don't have a chance of getting the correct location, as your data is intermixed with everybody else who uses that address.
Having said all this, web browsers can be asked to provide location, and this is generally what a website will prefer to use, if they can get it.
Edit: For this to be useful, the browser must have some way to know your location.
Edit: One other possibility, if you have a static address: You could add a LOC record to your DNS. I don't know how much this is used (probably not much), but it is possible.