I do initial contract for 3-6 months and tell them the truth about SEO and ROI, that it will take around 6-12 months to hit top spots (depending on KWs and budget they have). There are no obligations to stay in the contract, if at any time they want out I let them out without any problems. I don't do setup fee. So in general they are free to go if they don't like the service but, they are informed before very well about all shit that may happens during the way.
Also right now, I don't take more money than for two months of work so they pay usually monthly fee (but again, I inform them very clearly about their situation and about all problems that may comes our way). If we are progressing they have no reason to quite, if we stall they know why, because I told them why it may happens so again, they don't quite. Yes, this way of doing things produces some unpaid invoices and unresponsive clients. However, they key here is a proper qualification.
I don't think there is and ever will be a one good proposal that fits all prospects. Everyone is different and have different thoughts about their business, SEO and marketing. Often they don't know anything about marketing via internet. Sure some clients do know and they are my best clients because they are already informed and down to the ground. For me they are more like business partners not just clients that I have to teach during the way.
Another factor, your proposal should be built around a characteristics of a source you get a prospects from. Every source have its black sheep. You should use it to take advantage of it while dealing with clients (when giving that first pitch or sending email or whatever...). I have tested few setups and this works well for me.
Of course, I wont provide give you my proposals but, I will say this. Get a good copywriter and/or salesman if you dealing face to face (mostly the good ones have done both or doing it right now). Ask them to prepare for you a generic proposal that you can adjust to your needs later on. Good salesman/copywriter will research the market and will produce for you a solid speech that you can use. And while using it, you will eventually learn the market and then be able to play with it and change it to suit your current needs.
Regarding fees. The best way is to ask them how big budget they have. If it sound low for a job tell them. Show them competition and how much they spend (because you already should know that). If your prospects will tell you it's too much for them, offer them deal on a fee they can afford but inform them it will take more time and they have to be patient (only if you sure you can actually deliver results!). If you can't deliver results on a budget they have just don't take a job because if you do, you will make yourself a ton of problems. Some clients, even when properly informed and educated still don't get it, so you will have to deal with them anyway. But this is where the importance of qualifying comes up. You can't learn it from reading this, you only can learn it by practicing it.
Another thing is their website. If they come to you with a shit website (in terms of SEO) tell them that right away (no matter it's your friend, girlfriend, uncle or mother). If they need a new site because the old one just don't work and won't work even after SEO upgrades, sell them a new and properly SEO designed site. This is big because down the road, if website is shit, you will get into trouble ranking it TOPs (depending on the niche). And the fact is that most of the "out of the box" CMS websites it's harder to rank than properly built static HTML sites or properly altered dynamic CMS sites (it's not only about KWs research but also about right internal link structure... based on a fucking good KW research and competition analysis).