I started reading your blog a few months ago - good job and thanks!
I tend to estimate project duration based on my 17 years of software development experience, but sometimes I run into problems, especially if I hire subcontractors to help me. I feel really bad when I can't deliver as promised. Your suggestion of not giving clients a time estimate would be great but it ususally doesn't work - clients want to know when you can deliver the project. As a matter of fact, some of them even tell you what the deadline is - take it or leave it (sometimes it's too good to leave).
The way I handle multiple projects is by allocating blocks of hours to each project during the day. I never switch to another project when running a 3 minute build or restarting the app server.
I also send my clients detailed status reports every week, including what I expect to complete the following week. This keeps them abreast of the progress and decreases the number of unpleasant surprises.
Keep Up with TechRepublic