Spec the job after they give it to you and let them know how long it will take. Then when they crow about it tell them.
"I'm sorry you made that commitment but given the resources at my disposal It will take X hours to complete"
Do this every time...it worked for me.
Basically tell them they can have it Fast, Cheap and Good, pick two.