What did you mean by "users set their language"? Do you mean the language that the administration interface should use or the language that the users should translate content to?
In the admin interface or simply just switching between languages on the public site? If the latter: you'll just have to set up a siteaccess for each language (for example one domain per access) and direct the user between those.
Read this very useful article how to setup multilingual site http://www.ez.no/ez_publish/documentation/configuration/configuration/language_and_charset/how_to_setup_a_multilingual_site