Subdomain names (en.domain.com; es.domain.com) or, if the budget and infrastructure allows, individual TLDs (domain.com; domain.es), could be a neat way to differentiate content on top of a more engaging selecting mechanism.
Ultimately the approach depends on whether the primary purpose of selection. Does the user choose a region to see information related to his location (a map picker with a backup dropdown would be reasonable)? Or is the website geo-agnostic and it's only the interface language that gets changed (flags are pretty straightforward, but make sure not to offend anyone w/ US/UK mixup :)?
There's a great article on UXMAG that I personally found to be convincing enough not to use automatic detection tools. If you are a UK businessman on a business trip to Singapore accessing a Japanese hotel reservation website, what should the default UI language be set to? How would it differ if you're accessing the website from your UK laptop or from a local internet cafe?
That's close to rocket science but a solid pointer is to make language/region easy to change once an option is committed to (or set as default). There are few things that would frustrate me more than browsing an asian website that supports multilingual user interface but would not have visible means of changing it at the top right corner.