The first thing I want to mention on this topic is the fact that I am NOT a lawyer. If anything here sounds like legal advice... It isn't... This is practical advice.
Recently my wife took a job to photograph a group doing underwater dives. She contacted the group leader and discussed the basics. Among those basics was a price quote for her time and the end product (dvd of the images). The price was lower than usual because it was for a good cause. There were three dives scheduled.
Day 1: She went and had a great time photographing the group underwater. When she got home I asked about a contract. I had forgotten to get one ready for her. She said no but would take one the second day.
Day 2: I did not get a contract ready so she went again without the contract. No worries we will get it on the third day.
Evening of Day 2: The 3rd day of diving was called off due to the expected seas. My wife called the group leader to discuss how the payment was to be made and that the price would only be 2/3rds of the discussed price because the 3rd day was canceled. The group leader told her that he had no recollection of the conversation where cost was discussed. He said that it was supposed to be for charity/donation. Apparently there was a miscommunication somewhere...
Here is the business nugget ... Get a contract signed before you ever take that first photograph!!! Always! If we had this misunderstanding would have been evident on Day 1 before the dives. She would have gone anyway but there would not have been any confusion or expectation of payment.
Conclusion: Thankfully a resolution with the group leader has been met!!!
Bottom Line: Get a contract even if you do charity work!