Before Silverlight existed, Microsoft was making a push for WinFX applications that lived in the browser (XBAP). It was an elegant solution to unifying desktop-deployed and browser-deployed software. However, they reversed direction and modified their approach with Silverlight, which added the need to use JavaScript. It was an unappealing compromise to many.
But why would Microsoft modify their approach? Well, in 2003 Apple dropped the languishing IE for Mac for their own bespoke browser. The maneuver closed the possibility of an IE-only plugin having cross-platform support which may have made XBAP stillborn in the eyes of all but the most loyal developers.
The other option for Microsoft was porting their software stack to other OSes to make a Java rival. While Microsoft ultimately entered a patent agreement with Novell regarding Novell's cross-platform .NET implementation called Mono, it arrived late in the game in 2006. It is likely Microsoft already had a similar project underway, but development may have been prohibitively expensive and time consuming. Besides, their position was too dominate prior to 2003 for them to seriously consider bolstering rival OSes with their flagship development platform.
Yet, as history tells us, Java and Flash-based rich internet applications were rapidly increasing in functionality, making Microsoft's stranglehold on desktop development less relevant and, in turn, making rival frameworks more attractive. Silverlight is a desperate effort to stem the shifting tide of this sea change. As the massive revisions in Silverlight 2.0 indicate, it was also a stop-gap measure.
RIAs are necessary for Microsoft's survival. Success of Silverlight would drive their entire business: adoption of the Silverlight plugin makes their development platform more attractive which makes their servers more attractive which accelerates the adoption of their SQL, collaboration, email, and security solutions. Silverlight may just be Microsoft's gambit for the future of software development.