I usually spend an hour or two for free with the client, unless I feel they are not serious about it. If I assess studing the project will take more time, I give them a flat rate for it. It's my job to assess how long it will take, then use my daily rate to give the total.
I always include an escape clause in the contract in case they forgot to mention something very important that change drastically the price.
I also never quote the entire project, only the first deliverables. Then roll incrementally from that.
Most contractors around me are well paid, it's not a big deal to not be accurate at the begining. We adjust on the way.