At work, I'd say most of the time, however we use Scrum, so we don't estimate time; we estimate complexity. We have a rough story with a given number of points and we compare the task to be estimated against it. We get a consensus using planning poker, and that's usually pretty spot on.
At home, for my private customers, I do have to estimate time, and I'd say I am right quiet often. I split up my tasks into small tasks for which it is easy to estimate how long it will take to implement them. Then I add them up and double the total. That's what I tell my customer. I usually finish way ahead (remember: I doubled the time), however the extra time lets me work on things in parallel or be spontaneous about how I spend my time.