I was recently asked by my uncle if I could provide him with a generic project plan / schedule with deliverable milestones that he could contract against and measure completion / invoicing stages against.
Having had a quick think about what this could entail and using my experience as an employed and freelance developer, I came up with the following:
Generally, a rough time scale figure can be drawn up in the early stages of a project (step 2), which will give the client / developer an idea of the potential deadline of the project.
A deposit is normally requested after the specification document has been signed off (I ask for 25%). The remaining 75% is usually invoiced when the project goes live (if hosted on own server) or before all build files are released (if hosted on external server).
An acceptance and sign-off form should be presented at the end of a project, prior to the launch or final payment / invoice. It basically states: "The project is complete and approved, and any further additions, modifications, or training will be billed hourly."