You can't plan what you don't know
By definition, projects deal in doing new things. Things that haven't been done before. Things the company don't have experience of.
Consequently, if there was ever a true and frank project plan, it would read something like this:
What is the project going to do? Well, we're not quite sure. We think it'll be something along these lines .... but there could be lots of things that go wrong so we'll probably have to make lots of changes, to fix unforeseen problems, in unknown ways. We may even need several attempts before we find a solution to some of the trickier problems.
How long will it take? Can't say. If everything goes exactly right first time, and there are no disruptions, delays, complications, faulty components or changes - then somewhere between 6 months and 2 years is a good guess.
How much will it cost? No idea. We'll start off with a team of designers who will produce a pie-in-the-sky design which is utterly impractical - and then they'll leave. After that we'll get tenders from suppliers who will lie about the cost and capabilities of their products. Once we get the development team up and running, their people will be continually churned so we'll have to spend half our time (at full commercial rates) re-training new people who will that make all the same mistakes their predecessors made. Once we get to integration, none of the documentation will be ready as the management will have focussed efforts on delivering modules - as that's what their bonuses depend on. That means the first two attempts won't work, so we'll have to re-do most of the coding from scratch. Once the product is implemented, it'll turn out that none of the interfacing, legacy, systems will be able to talk to it - so there'll be massive re-writes of those needed. And by the time it's all finished, there will be a COTS version available from all those programmers we trained up, which will cost 1/10th the price and work right out of the shrinkwrap.
However. No-one in their right mind would ever come clean on the true costs, time, change and problems that a project will inevitably entail. If they did no-one but a madman would ever sign off on anything. So in order to get a project off the ground, everyone lies in the project proposal. Since both sides know they're lying, the signer-offers assume it'll cost twice as much and take twice as long as anyone says. Both sides also know that by the time IT hits the fan, they will have all moved on and it'll be some other poor schmuck's problem to explain the overruns and problems. This is the long standing tradition in IT, construction, defence, space exploration, and pretty much everything that involves doing stuff for the first time. So long as all parties play along, everyone's happy - including the barrel-scraping shock-hack tabloids who later get to dish the dirt on all the port, corruption, profiteering and incompetence in government and industry projects.
Phew.