I'd say, if sites like
http://escrow.com takes too much over the value, you could try to use a site like
http://www.getafreelancer.com.
They provide an escrow facility, and in case of dispute, they handle it.
But the first rules, in my opinion as a freelancer would be:
1) Keep everything ! In my country (Switzerland), an email is not a prove, but can help you to sustain your case anyway. If your client as agreed to something.
2)Don't send anything to a client before payment! Host the project either on free servers or on your server, and let he review it.
It has saved me a lot of problems. If the customer try to avoid it, I always manage to get a shell access to the server, but it was only with 1 client which I had worked dozens of time.
This has a drawback, that you may need to do the install part on your client server, but again, it's a small disagreement for a big security.
Those rules have saved me from any problems until now. That, and common sense. If I think the client is getting nosy, I ask for 50% to 75% of the payment, depending of the project advancement.
If he disagree, I usually stop to work on it, keeping the sources, thus his investment. The 2 times I had to use this method, the customer forgot about the evolutions, and paid what he had initially asked for.
In the same way, I have many times refused to work for someone who was making too much of "noise" ("I know how long it should take","I've programmed but don't want to anymore","If you can't finish in time, you won't be paid").
I may have missed opportunities, but in the long run, I'm sure I'm better looking for good, solid, recurrent partner that may pay less but are regular than for an high risk one time big bonus.
Sorry for the long post here, but I felt like writing tonight....