Since I check in my code, static files, documentation, and all resources along with the weekly invoice, the payment is due immediately. The client is aware of my progress on a weekly basis and knows exactly how many hours I have spent on which feature. I've worked like this for over a dozen clients and not one of them has ever had a problem with it.
I do not work on fixed-cost contracts but rather fixed hourly rate contracts. I give detailed estimate (Statement of Work) before the contract is signed and if I go over the estimated hours for any task through no fault of the client, I eat the overage costs (teaches me to quote better). If I am under the estimate, I bill exactly for what I worked on.