I second this. The contract should contain every little bit of functionality the client initially wants - from user registration to where the Twitter and Facebook icons will be on the homepage.
The right approach is the exact opposite: make this a time and materials contract, where you bill every month for the hours of work done that month. He will be able to ask for fixes to things which are outright bugs (depending on how the law and the contract specify the warranty provisions), but tweaks or enhancements will cost him money. Using this kind of contract makes it very easy to stick to your guns over this.