I agree doing time and materials, hourly rate is the only way to go. But if you are set on doing fixed-bid you can reduce risk through better project management.
At the beginning of the project write into the agreement a bunch of milestones that delineate the project. If you will do 2 design concepts, make a milestone for each. If you will do 3 revisions, call those milestones, too. Then, send a weekly status that shows which milestones have passed and which haven't. That way, the client should be crystal clear that they've used 2 out of 3 revisions, or whatever.
You should also write into the agreement what happens if the client asks for more revision, or out of scope work. Usually that is at an hourly rate.
Scope creep and expectation gaps are always the fault of the provider and not the client. Clients usually don't know or care about this stuff, you have to put it in front of them, make it clear, report on it, and be consistent. More experienced clients will be much easier and get it more.