It's worth mentioning with breaking down tasks that the more finely detailed your estimates get, the more time you estimate for the whole project.
This can lead to some scary differences between your initial back of the envelope calculation, and your very detailed estimate based on really understanding the problem in hand.
Of course, it should go without saying that the longer estimate is usually more accurate.
It's also really important not to forget the customer's role in all of this...
We are almost obsessional (and sometimes we seem to be in a tiny minority here) about doing what we said we would by the time we said we would. But I've lost count of the number of times that it's the customer who holds things up.
I love using parts of agile methodologies in our projects, but it's a rare (commercial) customer who will play their full part in the project. Many customers want fire and forget. When it comes to making design decisions, or providing basic information about their business, or signing off on things, or paying on time, or ordering hosting or... you find they've taken an extended 2 month break in the Carribean.
You have two choices - you can either factor this in, or make clear from the start that they have a role to play too and if they don't meet their obligations the deadline may well have to move.
As for actually using your lovingly crafted application in the future (and I'm mainly talking web based CMS / e-commerce type applications here), they usually haven't allocated staff to it and expect the fairies to step in and help out...
Cynic, moi?