shadytrees, your example works quite well, and I think it is mostly what you want. I have extended my sample page: http://alex.kirk.at/area7/2006/08/10/
As you can see, the only case that it handles kindof incorrectly is when you try to pass null as an argument. I agree that you would probably don’t want to do that anyway, most of the time.
Still the way I do it, provides a clean way to detect if the parameter was passed or not. In any case that I have tested so far.