How to sort the language detection methods
Well I think you are doing just fine, and don't get obsessive over this, it's ok!

the URL thing is the most important and should be always on top, I think session should be second since it can be generated via a request or parameter.

User I'm not sure since mostly users don't pay attention about their language preferences while registering on a webiste.

past these steps the rest doesn't really matter that much, but I'd put Browser the last one since it seems it can vary quite easy with plugins/extensions.