Besides Appcelerator, I'm aware of two desktop gui frameworks that have a browser component that wraps webkit: GTK+ and Qt. You can make the browser component fill your application's window and write most (or all) of the application in HTML+CSS. If you like the Python language or it's very significant standard library, you can use the python bindings pyQt or pyGTK.
A more "beefy" alternative to Prism, if you're willing to go with the Gecko engine, is XULRunner (https://developer.mozilla.org/En/XULRunner). While Prism is a set of lightweight bindings to the desktop for a web app, XULRunner allows you to build a complete app like Firefox itself or Thunderbird, etc. While many XULRunner applications are written with XUL, it is easy to write the whole app using HTML/CSS inside a single XUL WebBrowser component - and your javascript still has all the power of a native desktop application.
I have written a couple desktop applications using XULRunner. Almost all of the applications' code is HTML/CSS/Javascript, but I have included the Python framework (via pyXPCOM and pyXPCOMext) and have written a thin layer that exposes some Python functionality to the Javascript. The Mozilla components that come with XULRunner gives you a decent amount of functionality for free, but if you find yourself in need of more functionality or a full-featured programming library, Python will do the trick. There are also bindings to Java. Or, if you want to use C or C++ libraries, you can build XULRunner from scratch.
Update: A few things have changed since I originally wrote the above in 2009. For one, the Prism project was dropped from Mozilla Labs and subsequently discontinued altogether in late 2011 (http://www.salsitasoft.com/2011/09/08/discontinuing-webrunner/). One alternative worth looking at is https://github.com/rogerwang/node-webkit.
Dec 2014 Update: Another recent option is GitHub's Atom Shell. It uses Chromium's "content" module, just like node-webkit and Chromium Embedded Framework (and publishes it as a standalone lib: https://github.com/brightray/libchromiumcontent). One major difference from node-webkit is that instead of merging node's event loop with Chromium's event loop, Atom launches them both in separate processes and uses a mixture of sync and async inter-process messages to communicate between them.
If you're interested in embedding Chromium in a C++ or .Net app, there's also Awesomium.
path/to/firefox -app path/to/application.ini
. – Marine