I suspect the production reason Kim was never promoted was because the writers weren't excited about Wang's performance.
Well, I don't think that Voyager's writers were the ones who took the decision to maintain Harry Kim as an Enseign during the whole journey but rather the producers themselves, aka Rick Berman & Brannon Braga. But I wouldn't say that Garrett Wang's weak general acting performance was the main reason but more his behavior on sets and his repeated attacks towards the production & the writers in the medias. This is not well seen to bite the hand that feeds you, right?! ;-)
-> GW declared himself in interviews to have asked to Braga why his character, Harry Kim, was still an Enseign after several years while he has "saved" the crew several times and Braga would have replied that they needed to have an Enseign in the main crew and no luck, it fell on him,.. . This is commonly referred as how to kick better for touch!
(hey, Wang even asked to Kate Mulgrew to intervene with the producers for his for his character to be promoted, as if the lead actress had some power at this level!).
Let me say that this guy is incredible: despite his laziness on sets (for which he had been sanctioned at least once officially, in being suspended 1 week without being paid), Garrett Wang saw his job being saved thanks to a ridiculous poll ; he got some good episodes for his character in almost all season already shot and he still came grumbling because Harry Kim wasn't promoted?! :-O
It wouldn't be surprising that Garrette Wang was blacklisted after Voyager's experience and besides, he admitted implicitly this possibility in declaring that after Voyager, he had no real acting job. <grin>