Kulhavy made the most of a final steep ascent on the technical circuit in the English countryside to move ahead of Nino Schurter of Switzerland and then sprinted to the line.
Schurter claimed the silver medal and Marco Aurelio Fontana of Italy took bronze.
Kulhavy, whose sole objective this season was the Olympic gold, put his hands on his head as if he couldn't believe he had won. He then wore a Czech flag like a cape while Schurter, a bronze medallist in Beijing four years ago, collapsed to the ground totally spent after crossing the line.
"It was really hard. We went full gas all day. I gave everything, all my energy," Kulhavy said. "This was so important for me this year. I've now won everything, the World Cup, the world championship and now the Olympic title."
Geoff Kabush of Courtenay, B.C., had a surprising eighth-place finish, while Victoria's Max Plaxton did not finish. Kabush was ranked 29th coming into the race.
On the punchy course featuring short but steep climbs and several technical sectors, all pre-race favourites got off to a strong start, with Schurter leading the pack ahead of two-time defending champion Julien Absalon of France.
But Absalon's hopes of retaining his title were dashed shortly afterwards by a puncture. The Frenchman said he probably started the race with a flat and that his tire deflated progressively.
Absalon was dropped by his main rivals and was already trailing the leading group by 54 seconds after the first of seven 4.7-kilometre laps.
Absalon, who won gold medals in Athens and Beijing, retired in the second lap.
"After being an Olympic champion there was no point fighting for a 10th-place finish," Absalon said
At the front of the pack, Schurter rode an aggressive race as only two riders, Kulhavy and Fontana, were able to follow his frenetic pace. The leading trio started to work together to distance the rest of the field, building a gap of 10 seconds after the second lap.
On the man-made course overlooking an estuary of the River Thames, they were caught by Burry Stander of South Africa and Spanish veteran Juan Jose Hermida at the finish of three laps.
Those five riders increased the gap between themselves and the rest of the field, with their advantage reaching 20 seconds at the end of the lap as Schurter went to the front to set the pace.
The lead was roughly the same with three laps left, though Stephane Tempier of France and Alexander Gehbauer of Austria tried to drag across the gap.
Kulhavy attacked to open a small gap during the fifth lap, but Schurter leaped onto his wheel. Sanders and Hermida then struggled to keep the pace in the sixth lap as Schurter, Kulhavy and Fontana set a faster tempo.
Kulhavy attacked early in the final lap and tried again in a steep ascent, but Schurter was able to respond. Fontana was the first to crack while Schurter and Kulhavy battled until the final sprint.