You are correct in trying to determine the preferred language from the user's browser setting. This is typically the best option to determine what language to display to them. But the problem comes when either you cannot get a preferred language, or the list of preferred languages contains more than one language that your content is in. OR even that the user selects a different preferred language from your site language options.
The next thing to try should be the user's location. You can use a IP Address geolocation lookup to find the country code and then cross reference that with a language lookup table. This would give you a better guess at the user's preferred language.
And lastly, you should have a default language for the site. If the site is truly global, then I would suggest that language be English. If the site is expected to receive a majority of visitors from a specific area, then I would suggest using that area's language.
In this case where you were unable to guess at a preferred language, this has the highest likely-hood that the user would need to change the language setting. This should be very easy for them to figure out. Maybe a giant banner at the top of the page that shows the list of supported languages. Once they make a language selection, you could animate this language bar to minimize to the language drop down selector somewhere. This way they clearly see where they can go to change it again if need be. Although that will not happen very often.
You really only need to set the preferred language once for each user. This should be stored in a cookie, so you don't need to do these other things each time. If the cookie is not there, then you will need to do the guessing or offer the language bar. But once a preferred language is set, you can pretty much assume that it is not going to be changed, except for a very small number of users.
Now, if you find that you don't want the hassle of trying to guess the user's preferred language through browser settings or geolocation lookups, then I would strongly suggest the default language and a large language bar at the top of the page. Again, once the language is selected, set a cookie, and get the language bar out of the way. It should not be needed again.
Hope that all makes sense...