In Weblocks we have put a HANDLER-CASE around our request handler to catch internal errors outselves and then display the appropriate error message.
If you want to deliver a 500 HTTP status code, put 500 to the HUNCHENTOOT:*APPROVED-RETURN-CODES* list in order to prevent Hunchentoot's error handling mechanism intercept and mess with the response. Edi and I discussed that topic yesterday and we think that there are some improvements to be made in how Hunchentoot handles errors. Expect changes in that area.
Just to make things clear: I am not particularly interested in lisp errors in my own code: I already have a handler-case for that.
Brett