I often hear people praising web applications (as opposed to desktop apps) for their portability. Indeed, making a desktop application available on multiple operating systems is difficult. However, I'd think web-applications have to deal with portability issues equally well, only between browsers instead of operating systems. Or is it not difficult to make a cross-browser web application?
Browser compatibility is far far easily achievable compared to operating systems compatibility.
For detailed info on portability you can read this.
It all depends on what exactly you are trying to build. Some toolkits like the QT toolkit allow quite easy and fast compilation and cross platform portability. Web Apps are quite trendy and "in" at the moment as the culture of the Net is all to do with Mashups, distribution and what not. The problem is that this was never really envisaged when most browsers were made though they are getting faster. Thin Clients such as Google Docs and what not are indeed very useful but cant quite compete head to head with a desktop version but then, they arent trying to. its mainly down to what you use them for.
Of course you are right that there are cross browser compatibility issues with writing web applications. But, as with desktop application development, there are frameworks and libraries you can use that will deal with this for you (e.g. JQuery, Google Web Toolkit, Yahoo UI).
One thing that stands out as being simpler with web applications is having a consistent look and feel across platforms. Browsers all use CSS and generally have consistent looking form elements (or will use the appropriate elements for the platform). With desktop applications a cross platform native look and feel is more difficult to achieve. One of the big criticisms for using Java for cross platform GUIs is that even when you use the platform look and feel it is not native enough. I am not sure whether libraries like Qt are better in this regard.
Just keep in mind that for web applications, there are two levels of portability.
First and most important, the browser portability. But if the application has to run on more webservers, there is also server side portability. Most of the time you decide linux vs windows. But there are other issues (for example php version requirements).
If a web application carefully designed according to the MVC pattern, then the view-part (pages) is ported already.
If the business layer and the data layer are well designed (not spaghetti-code) and do not intermix, then they can also easily be ported (but that's true for desktop apps as well).
Anyway, web application are ported already - you can use them in many browsers on many platforms.
Yes you can often build very highly interactive and rich web apps, unfortunately the development process is much more complicated due to the tools used, browser incompatibilities and so on. But things like Silverlight are making it easier.
There are still lots of places where desktop applications are far more appropriate.