Windows only real platform isn't just Windows. While Microsoft don't release their own version for Linux, they do support the Mac. So the same code written for SL needs to run on both the Mac and Windows.
It has to be a virtual machine because it is .net, the virtual machine brings with it all the normal benefits of a selection of languages, garbage collection, sandboxing of code etc
It doesn't have to be in the browser. SL also supports installing apps locally along the lines of Java's Web Start.
Don't get me wrong, I mainly wish SL didn't exist, but given that MSFT decided to do a Flash replacement, I think they did a good job of it.
_________________________
Remind me to change my signature to something more interesting someday