1. Cookie is of course great but have in mind that cookies aren't permanent and doesn't propagate through browsers and devices, that's why I'm so bothered by youtubes approach. Actually, youtubes approach isn't _that_ bad, although they dismiss my browser locale they only inform me that there is a localized version, the problem is that they do it in a really obtrusive way. If there was a small localized flag in the top-left corner or something that'd be fine and I wouldn't have to dismiss the thing all the time (or if they respected my browser locale).
2. Browsers locale is a neat idea but it has flaws, you might not be at your own computer (school/work/café etc. (introduces the problem of what permissions you need to change this setting - there should also be a way to set it temporarily for this session (any browser that lets you do this?))) so don't assume it is correct (most surely don't know it even exists). Debian.org was perhaps the first site to follow the browsers locale that I stumbled upon (before I knew sites could even check for it) with no mention of it and no other way to change the language, I actually thought it was a phishing site at first and after assuring myself that I was at the right domain I couldn't for my life find the english version. I started googling and found others with the same problem in forums and that way I found out that there was a setting in my browser and that debian locked on it. That was a really horrible and time consuming expericence. They've fixed it quite well now, default on browser locale but list all languages at the bottom so you can change it quickly and they also explains why they defaulted to what they did and how to change it, great!!
Facebook not only presents the most popular languages on the frontpage, they check your Geo IP (I think) and gives the first language on the list to the language that they guess you'd prefer (nice). Problem is that they don't respect my priorities. Even though I have english first in my browser locale they default at swedish (second choice), if I remove swedish altogether it finally defaults to english. So they think they know better than my browser what language I really prefer, sigh... (later I assume (I don't use facebook) that the setting is stored in the account, which is great of course but on sites that doesn't require an account (such as youtube) please choose your defaults carefully).
3. There are obvious problems (and benefits of course) with this. You have to really balance the options of what is more cumbersome for your users and to do this you should have an understanding of the culture and your target group for all languages that you implement. Some might be turned off by an english site and others will scream in agony if they can't find a quick way back to the english site.
Always assume you might get your default wrong (if the computer is at a internet café the cookie might be incorrect as well), always make it easy to switch to english.
One thing I really dislike (popular for large corporations) is a whole page that lets you choose region before entering the site and they don't list the reason for why either. Are they basing the language on this decision (most likely, just hope they haven't implemented mine yet) and/or is the information on the site only relevant for that specific region? If I go to the site in order to look up information about the warranty for a product I must choose between having a badly translated page that is seldom up to date but has localized information, or I can choose the official/US/UK-site that will be comprehensible and up to date but the information I get might not be valid in my region anyway. Ok, that was more of a rant but that is true for soo many sites it's not funny and even if they do a good job of it they communicate it badly so the experience is bad anyway.
Localization is a difficult problem that has the potential to annoy many people no matter what you do.