Well I guess I have to be honest. I have been using Flash since the first release and have watched the product mature. I have been using Silverlight for about a year now, with my use picking up in the past few months.
How do they compare, sadly for Microsoft they don't. Silverlight, even using Expressions, requires a great deal of coding skills to get anything to work, and very quickly even a fairly simple animation or interface becomes a confused mass of XAML. The clean interface with Flash allows developers to manage vast amounts more complexity.
Just to stage a single repeating animation in Silverlight is a mind dulling piece of complexity. You keep asking yourself why they did it this way? Going from Flash, where you get an easy story board tool the drives the site and the ability to make scenes, you will find Expression confusing.
Probably a key indicator is how I learned. I learned Flash mostly by just playing around with it. Sure I got some books but really 90% of what I learned about Flash was because the interface was so obvious. And it was fun to play with and you could get results easy. And this was back in 1999 when it was not obvious what the tool was trying to do.
Silverlight Expressions on the other hand requires I keep the manual at my side constantly. This is with a full knowledge of what the final output will be.
Perhaps the worst part for me so far has been getting the animations to actually work. In Flash animations just start if you want them too, its like getting pregant if your Roman Catholic. So far in Expressions I have had to make changes to the XAML code setting a storyboard start object. This is not only confusing it then breaks the Expressions interface and makes it impossible for me to add to the existing storyboard without making the changes by hand to the XAML code. There may be an easier way to do this but I have not read that far in the manual.
Compound this with the fact that everyone has the flash plugin installed, Flash can run against Java and PHP back-ends, and Flash can be used by designers as well as programmers and Silverlight can only be used by developers; well lets say if you have existing Flash projects going keep them Flash.
I would imagine that at present SilverLight should be limited to the following:
1. Full Microsoft implementations
2. Simple user interfaces
3. Intranets and other controlled platforms.
All other situations should stick with Flash.