Jill makes some good points there. I personally think that it should be different for each individual project. For example, we charge on a performance basis for some clients and a fixed rate for others. Some just have us on retainer.
What we have found works well is a flat rate fee for a site review with a DETAILED document reporting the potential problems. The customer can use the document to resolve the issues in-house or use us (or someone else) to resolve them for an additional fee.
SEO contract work should be approached carefully as results often tend to take many months. We had a client that was hit by a -950 penalty the month we took their account. It took us two months to resolve the problem. If our contract had have been for 1-3 months, things could ahve got nasty. Thankfully, when it emerged it peaked.
Anyway, my point was simply sit down with your client, understand their needs and go from there. There are many different pricing models and there always will be. Find the common ground.