Thank you for all your answers and feedback.
It's been a while since I asked this question, and since then I have greatly improved my time estimation skills using scrum and agile methodologies. We use whiteboarding and scrums, and we delivery in chunks, on time.
As for when the entire project will be delivered, depending on the size of the project, the delivery date is still unknown. However, by breaking up tasks into stories and sub-tasks, we can get an idea of project's magnitude. This enables us to show management whether their delivery expectations are realistic.
Furthermore, having a backlog of tasks allows us to continually re-prioritize with each sprint. This ensures the highest priority issues are completed. Eventually, the remaining items in the backlog are insignificant, and the product is "good enough" for release.
So far it has worked well.
More details: http://www.scrumalliance.org/pages/what_is_scrum, http://www.goodagile.com/scrumprimer/.
Sorry to mark my own response as the answer, but this is what worked for me.