Fred on WeBreakStuff mentions a problem with Google where it identifies where you are on the world and sets the language accordingly. The problem is that if you are a traveller it is really hard to figure out how to change the language (everything is in another language!)
In a long, long time ago, on the day of Web 1.0, W3C created a very neat feature called "ACCEP-LANG". Basically, the browser could send to the server the preferred languages of the user. And Browsers manufacturers did just that. Fantastic, all problems solved, right? No so much. Most Non-English speaking countries would get copies of the US version of the product (Windows, IE, Netscape, whatever) because sometimes either the localized version was not available, or, because the localized version would take a few more months to reach the market. Even when they didn't get the english version, the manufacturer, sometimes, made bad choices and set the language by default to "en-us" (English, USA).
When a new version of the browser came along and the user would upgrade, the browser would detect it was an upgrade and not reset the user preferences, which was defaulted to "en-us".
The result is that most of the browsers outside the US still used the "en-us" as their preferred language. That completely killed the ability for a Server to detect the user preferred language and send correct content. If you only going to get 50% of the time correct, why bother?
IP geolocation is much more effective. Even if you consider the problem with ISPs that use the same IP across multiple countries (like AOL), you can reach 70-80% of precision. If you use a solution more robust (a la Quova), the server can identify the location of the user 95% of the time or more. That is why Google uses this approach.
The problem with people that are using an IP in a country and don't speak the language is minimal. Though, it is a problem.
At Sampa we've always been aware of this problem. Because of that, all boxes where you have to choose a language and/or country are presented in English and in Native. English is the de facto Internet language. Anyone on the Internet might not be fluent in English, but for sure they know how to read their country name and language in English.
If I had to choose presenting only the English version or only the Native version (like Google does), I would always use the English-only version. It might not look great, and it can even upset some nationalists, but the usability is exceptional.
The reason that I decided to add the English version *and* the Native version to drop-downs is because it is a nice touch. Nationalists won't get upset: they can identify their country in their language, no matter what the UI language is, and, there is always an English version by its side to make sure that you can switch back-and-forth any language.
When I think of problems like this, I'm always reminded of how narrow-minded people are. Everyone has limitations on what they understand, how they see the world, and how they think others see the world. The best software, website, device, application or tool that you'll ever make is the one that you asked the most diverse group of people about it. Don't limit yourself to just one group of people, even if that is your primary customer base. Sometimes, a non-customer might ask a life-changing question about your product that completely opens your mind to a problems/solutions that you've never thought before.
Tenha um bom dia/Have a nice day.