Must Haves
Limited Liability
Lawyers and angry customers are not nice people and will not hesitate to sue your ass. Be sure to cover your rear end with a limited liability statement. The standard practice is that your liability cannot exceed the cost of services rendered so far.
Statement of Work
Don't say "I do the website" in your contract because it is too vauge and opens a can of worms for never-ending contracts. Use a specific, itemized list of things you will perform. List initial delivery dates; it's okay to group items into "phases".
Payment
Shaking hands to $50/hr or $2,000 for the job is not enough. You need to put it in writing. HR departments might also ask you to include a "maximum payment" that cannot be exceeded in case things run over. A good guideline for this is 10%.
Taxes, Benefits
If you haven't considered taxes yet, you're in for a big surprise. At any rate, you need to state who pays for things like taxes and benefits. If it's more of a temporary employee gig, then usually the company pays, if it's more of a contractor job, then you're responsible for it all.
Contract Dates
Dates are very important. Your contract needs to have an expiration date that says how long the offer is valid for. It should also have a definite cut-off date for maintenance and bugs.
Contact Information
Have both party's contact information available on the contract. Billing address, phone number, contact names, email addresses. This will help in resolving any legal issues that arise.
Should Haves
Bugs and Maintenance
This needs to be addressed. What constitutes a bug, and not a change or addition? How long will you continue to address bugs? What's the maximum amount of time before a bug gets resolved? You should think about testing practices while you're at it.
When and How You Are Paid
Whatever you don't include in your contract puts you at risk for a terrible slap in the face. Often, billing departments can run super slow. How slow? So slow that you receive your first paycheck a year after the project is over. Try to agree on methods of payment and payment dates.
Agree for Written Changes Only
This is more of a scope creep thing, but you should require that your client can only change the contract with a written agreement for new/changed work items (and a separate price tag).
TimeSheet: Anytime, Anywhere Policy
HR departments like to look at your timesheet every once in a while. It also shows if you are working and provides a layer of transparency that clients appreciate. Nowadays this is super easy, and even a GMail SpreadSheet will do the job.
Best Advice
Find a lawyer. Any old friend of a friend of a friend will do as long as they are trust worthy and attentive to your needs. If you're going to be doing this contracting business often, consider becoming a LLC or being employed/under one. It will help with legal issues immensely.
And, remember your taxes! You will get fined if you don't.