We all have this type of thoughts at some point or another and they do come from time to time.
Probably, you'll need to learn to find another type of client that appreciates your job a bit more. But to do so, you need to know yourself, the level of knowledge and expertise you have, the quality of your job and how much you think that it will take you to do a particular job.
On top of that time frame, you need to add another 20% of time. Just to take into account things like sick days or some holidays (which you may or may not take... probably you won't if you didn't calculate the amount of time that it would take properly) or some major problem (such as that your house is flooded and you have to move. These things happen)
You may want to add a bit more of time, just in case. So instead of a 20%, maybe a 30%.
After that it is when you give your quote, time schedule, etc.
Now, customers tend to ignore you quite a bit. If a project is delayed because of the client, and it is his fault and you can prove it... that's not problem. You can add a clause to the contract that if the customer doesn't answer to your queries in certain amount of time, you'll charge X more, or that you will consider the project finished with no possibilities of refund or something similar. Just make sure that your customer knows and understands your conditions from the very first moment.