Media playback is not supported on this device
Britney Cooper hit a 48-ball 61 as West Indies made 143-6 batting first, while Sophie Devine picked up 4-22.
New Zealand began well in reply, but lost their leading run-scorers Devine and Suzie Bates in the seventh over.
Sara McGlashan and Amy Satterthwaite put on 59, but Stafanie Taylor's three late wickets proved crucial as the White Ferns subsided to 137-8.
West Indies, who have never won a global title in the women's game, will play Australia in Kolkata on Sunday in a rematch of the 2013 World Cup final.
They were indebted to a superb innings from number three Cooper, who did not play in West Indies' previous game and averaged just nine from 44 previous T20 internationals.
The defeat completes a double disappointment for New Zealand, whose men's team lost their semi-final against England on Wednesday - with both teams having come into those games unbeaten.
West Indies captain Stafanie Taylor: "We have been waiting for this for four years now and it's fantastic to be in a final. If we are consistent enough we can definitely win in the final."
New Zealand captain Suzie Bates: "Credit to the way West Indies batted, especially Britney Cooper who took the game away from us with a good performance. Probably 140 was too much - we thought we could do it, but we lost wickets at crucial times."
Media playback is not supported on this device
West Indies will meet Australia in their first World Twenty20 final after a six-run victory over New Zealand.