Interesting article online at http://www.infoworld.com/article/03/02/06/06stratdev_1.html.
It basically says that prototyping is a Good Thing, and that solid prototypes lead to a better understanding of the problem, which leads to better software in the end.
This is something I've always done, just because that's the logical way to go (in my opinion)... Start by analyzing the problem, then enhance your understanding of it, then solve it.
It's waaay too easy to get it wrong if you go the other way around...