Traditional project managers are challenged throughout the life-cycle of a project because they are always trying to overcome expectations that are rarely based upon fact. It usually starts with the project sponsor already having an expectation of how long a project will take. From there, they are asked to plan the entire project within very tight margins at the outset before much is known. Software development can be more art than a science and effectively predicting the outcome upfront is akin to predicting the weather. No wonder most software projects are delivered late and over budget.
The good news about Agile is that you no longer have to be a fortune teller. You are free to plan throughout the lifecycle of the project. Before you undertake an iteration you can stop and check for changes from the customer, new discoveries from the team, and any other factors that might improve the outcome of the project. You get to plan throughout the lifecycle of the project, representing progressive elaboration at its finest.