What we normally do is dividing full work scope into major modules / elements which could be considered as sub-project. In other words they are those work parts which client consider as separate parts of the project and which client wants to get estimated separately.
Once it is done we divide each module into tasks, sub-tasks and even smaller sub-sub-tasks so that each one can be estimated quite easy and the estimation take from one to ten man-hours. That way we get detailed breakdown of work scope for the project.
Last step is distributing tasks between milestones. We do it the way so that after each milestone client gets visible results. That helps to pass one milestone and move to another one.
So finally we get something like:
Module 1
<ol>
<li>
Primary task 1 - 5 hrs
<ol>
<li>Subtask 1.1 – 3 hrs</li>
<li>Subtask 1.2 – 2 hrs</li>
</ol>
</li>
<li>
Primary task 2 - 9 hrs
<ol>
<li>Subtask 2.1 – 1 hrs</li>
<li>Subtask 2.2 – 2 hrs</li>
<li>Subtask 2.2 – 5 hrs</li>
</ol>
Initially we did it just using excel sheet. But more than two years ago we started to use software tool for that. There are few similar products which helps with it www.evenflow.com, www.swproposal.com and a few others. I don't remember all list. We did research long time ago. Hope that may help.
Good question is how to estimate precisely. There is no 100% correct estimation as we believe. The only way is to divide full work scope into as small tasks as possible. The smaller tasks you have the more detailed review and analysis of the project you do. So that anyway increases accuracy.