In my consultant capacity, I am helping engineer several applications. One is a Desktop App that has been a Java Swing based application for about 4 years. On version 3.0, it was recommended to switch to a Web Based Application, and a proposal to reuse 80% of the infrastructure was put forward. But instead, the client chose to revamp the Swing app. I think this is an unwise choice, especially for the nature of this CRM application.
The deployment and distribution costs of desktop apps are quickly becoming an unnecessary cost. Dietrich Kappe makes a similar point here.
His list of reasons for choosing a desktop app over a web app are brief, and only three points in length:
1. It is unwise to expose the application to the outside world. Example: power plant management software.
2. The application calls for integration with custom hardware or mobile devices. Example: scientific software that integrates with custom measurement devices.
3. The application requires fine control of the underlying video/audio hardware. Example: first-person shooters.