TL;DR
Planning and scheduling are two separate activities. In planning, you define project charter and plan, just enough to be able to start scheduling. The post is based on a remarkable book written by Johanna Rothman, Manage It!
After you have your initial project charter and plan as a result of planning, it is time to estimate the project. Do not fell in a trap to start scheduling the whole project. Schedule just enough so the project could begin. Based on that experience, you will replan the initial charter and plan and reschedule your project. The thing is that you will have a working application at the end of each iteration.
I Want It All Customer
Of course, some customers would like to see the shiny project schedule before they sign the contract. In that case, plan and schedule the whole project, but the customer must be informed that this is your best guess at this moment.
Scheduling And Estimating Are Two Separate Activities
Scheduling is about ordering and showing interdependencies of project activities (tasks). Do not forget about interdependencies. The schedule is estimating how many man-hurds would each task take.
Timeboxing Is Your Best Friend
Your team is eager to start coding! Timebox one hour for project charter, another hour for the project plan, and last hour for the project schedule. Release your developer keyboards and repeat your project planning and scheduling.