I would also stay away from Visio - you only get diagrams, not a model.
Rename a class in one place in a UML modelling tool and you rename in all places.
Sparx and Visual Paradigm do UML really well and generate code well, however, hooking into project lifecycles and other process is where RSM/RSA is strong.
Watch out for closed or product specific code generation processes or frameworks as you could end up stuck with that product.
Hopefully online modeling is going to change the way many IT people evaluate and use (UML) modeling in their day-to-day development projects. Why is this voted so high why it does not answer the question? The first line in the question says "creating UML diagrams of all flavours.".
I would vote it down, but I am weak, so I will just comment. I came in to share this one as well, realizing that it doesn't answer the question in full.
I tried out most of the mainstream desktop uml tools. It's a freemium (free for the basic tasks, paid for advanced features) product, and lets you quickly bang out a diagram without any fussing around with lines and stencils.
NEW - Found a good list of many UML tools with descriptions.This question and its answers are frozen and cannot be changed. Some context: Recently for graduate school I researched UML tools for usability and UML comprehension in general for an independent project. The previous posts have too many answers and not enough questions.A common misunderstanding is that UML is about creating diagrams.If you feel that this question can be improved and possibly reopened, visit the help center for guidance.This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here.