Estimates are not promises
An estimate is a guess made with incomplete information. A promise is a commitment made with intent. The two get spoken in the same sentence and heard as the same thing.
Where the confusion starts
You say "about two weeks" in a planning meeting. By the time it reaches a roadmap slide, it is a date. Nobody lied, the number just lost its uncertainty on the way there.
Numbers travel, context does not
The caveats you gave, the unknowns you flagged, the "assuming nothing changes" you added, none of that survives being copied into a spreadsheet. Only the number does.
Say the range, not the midpoint
"Two weeks" sounds precise. "Somewhere between one and four weeks, most likely close to two" sounds honest, and it is closer to the truth of what you actually know.
Name the assumptions out loud
An estimate is only valid under the conditions it was made in. State them: no scope changes, this person available, that dependency ships on time. When a condition breaks, the estimate breaks with it, and that is expected, not a failure.
Revisit early, not at the deadline
The first few days of a task tell you more about its real size than the planning meeting did. Report drift as soon as you see it. A number updated on day three is useful; the same news on the due date is a surprise.