If this is in a commercial scenario, you should also take a look at yWorks' yFiles.
It has all the features you are looking for and its most outstanding feature is the capability to automatically arrange your diagrams. If you have a bigger state machine or even create the state-machine in code, this will help you clearly arrange even large diagrams automatically. Also for the labels there are automatic label placement algorithms, which find placements for the labels so that they do not overlap with each other or with other unrelated elements.
You can see the library live in action in this Youtube Video, but you can also play immediately with the Silverlight live demos online or just evaluate the library and play with the sample sources.
Disclaimer: I works for yWorks, but on SO I do not represent my employer.