I needed to send users reliably to the correct WPML translation depending on the country they came from. The “Browser language redirect” option that WPML provides is a very simple method using the HTTP_ACCEPT_LANGUAGE header. It doesn’t work reliably, and assumes you have named your languages after proper locale names.
GeoIP Redirector for WPML to the rescue!
It uses a GeoIP database (MaxMind) to pinpoint user location more exactly. It also lets you specify your own mappings (user country to language) easily.
Feel free to fork the plugin on GitHub, or download it directly. (Please read README.md for instructions on setting the plugin up.)