Desmond is wrong. Not because his vision was wrong, but rather because it was incomplete and therefore his interpretation was incorrect.
How could I know his vision was incomplete when we were not shown it? "Elementary, my dear Watson..." We have seen two of Desmond's visions. One when he was thrown backwards into time, and one where he was thrown into the future. In both instances his journey was viewed from a first person perspective: his. At no time did he see things that were outside his own physical perceptions. He may be unstuck in time, but he is not omnipresent.
Desmond tells Charlie that he sees Claire and the baby get on a helicopter, so we know Desmond returns to the beach. He _knows_ that helicopter will never come unless Charlie goes to the Looking Glass Station. The plan was not for them both to go down, but for only one of them. While Desmond was willing to take Charlie's place, he still never suggested they both go. So, if Charlie was meant to go alone, Desmond would not be able to see what happened after Charlie went into the water. Whether Desmond's vision included Charlie wacking him with an oar or not, Desmond's vision of Charlie ended around the point Charlie entered the water.
Whether Desmond's vision included his 'nap', he certainly never saw Charlie return to the surface. It was not unreasonable for him to assume Charlie drowned, especially since Juliette has (incorrectly) informed them that The Looking Glass is flooded. Assuming Desmond returns to the island, and the castaways are able to contact the ship, it is reasonable for Desmond to assume (in vision and real-time) that Charlie flipped the switch. (More likely he will convince the underwater amazons to flip it.)
Now, one could hypothesize that Desmond knew the Looking Glass wasn't flooded, and that somehow Charlie flooded the station at the same time he disabled the jamming signal. Could happen, but still Desmond couldn't know about it unless he was there; which would contradict him being on the beach to see Claire escape in the helicopter.
Given the logic of the show, and their attention to detail and plot consistency, Desmond didn't see Charlie die. Desmond guessed. Charlie doesn't have to die purely because of Desmond's incomplete first-person vision.
All hail Charlie the Hero, may he yet live!
ps. I have added a follow-up post explaining why Charlie should not, in fact could not, have drowned the way they show portrayed.