1) Serving a GUI application to multiple users in a way that they can trust
2) Maintaining up to date versions without client side updates
3) Storage of data on a remote server over the internet, enabling saas etc.
4) Easier GUI development using an IDE.
This points to needing something more akin to Citrix/RDP/Terminal services. Run full blown GUI apps on the server and serve an image of them over the network. This needn't be as bloated as the MS implementation, but seems to solve those issues above