Joel on Software - Friday, May 16, 2003 comments that software prototypes are almost never worth the effort. This has to be part of developer 'folk knowledge' by now.
Even worse, when prototypes succeed they run the risk of being used in production systems with all the consequences this has of the prototype solution not being properly architected to fit into a full production deliverable.
I think The Pragmatic Programmer does an admirable job in laying out the Good Rules.
Do blackboard or paper prototyping. When building incomplete software use a 'Tracer bullets' approach. Tracer bullets are developed by sticking to the full architecture but keeping all elements not required to display functionality 'constant', e.g. letting functions return constant values instead of actually computing anything, etc.