You can take some advance payment for the work and then start the work. Clear upon the payment terms before submitting the work. Get the payment part by part. In that case you won't lose much if they decide not to go ahead with the site.
I collect 20% to start, if they don't like the design they can screw off and lose 20% but I doubt they will leave their money wo they will have to take the design. You collect the 80% when the project is finished.
Definitely get some cash upfront, we did one site which turned out to be a hell of a lot more work than expected, it got to a point where we had to do what they wanted because we had done too much work on the site to walk away with no cash.
The woman wanted stupid changes everyday and then the next day she would change her mind again and want it back the way it was.
I would never again do a site without a deposit.
The guy held a poll in his forums about whether to keep the design or not, so that he can pay me, and yet he still ignores me.
Man, now THAT'S really pushing it. It's always a good idea to set a time limit on the contract too. I remember in the early days of web dev, my clients would take months to get things just right and waiting for content etc. If you have a time limit, you can then charge extra per day that it's overdue. (Only if it's their fault of course )