Plans are like food - they have a limited shelf life!
This may seem obvious but is often forgotten. Nobody can predict/estimate what will happen for a very long period of time. Review progress on a regular basis and adjust your plans accordingly.
This does not have to be a cumbersome or tedious process, nor does it have to be time consuming. The key requirement for this is to adopt so called management stages to your projects from the get go.
A management stage of a project is a sub division of the project solely around management decisions.
It provides a control instrument for the project manager and the project board / steering committee to check progress of the project and to make informed decisions on how to proceed (continue, alter course, stop to name a few of the most common options).
Don't confuse management stages with so called technical stages.
Think of a system development life cycle e.g. specify, design, build, test, train, deploy. Technical stages are determined by the type of specialist work the project will undertake such as build a bridge, update operational processes, pursue an opportunity to name a few.
Management stages never overlap whereas technical stages may!