"I am so delighted. I had to fight for every point and I am so happy it paid off," said Hantuchova, who had lost all four previous matches against Vaidisova.
The 10th-ranked Slovak will play her fourth WTA Tour final of the season in a bid to win her second title after Indian Wells, and her third title overall.
Hantuchova and Schnyder are 8-8, with the Slovak winning five of their last six meetings.
Schnyder, who lost to Maria Sharapova in the final at San Diego in July, will play for her 11th career WTA Tour title, and her first since 2005.
"It's great to be in another final," said the 17th-ranked Swiss, who also reached the final in Linz in 2005. "We both played super in the first set, and she made me work really hard in the second."
Hantuchova was overpowered by Vaidisova's strong serves and groundstrokes in the opening set, but was in control of the second as the Czech started to make more errors.
Vaidisova took a 4-1 lead in the decider, but then lost serve and missed a match point at 6-5 as Hantuchova hit a service winner.
Hantuchova converted the first match point she got in the tiebreaker after Vaidisova hit her ninth double fault of the match.
The third-seeded Bartoli came back twice from a break down in the opening set, but lost it to Schnyder in the tiebreaker.
The ninth-ranked Bartoli, who had her left thigh taped, was increasingly hampered by the knee injury which forced her to pull out of the Zurich Open quarterfinals last week.
At 5-1 in the second, Schnyder missed three match points on Bartoli's serve and was broken afterward, but then closed it out on her fourth match point as Bartoli hit a forehand wide.