Okay, I've officially thought of this subject WAY too much, but I may have something
Now, this assumes that Starfleet and the Federation use currency and credits (which they DO, as Starfleet officers routinely spend credits at Quark's Bar and Dabo tables). I'm not getting into the whole "money doesn't exist in the 24th century" debate. I just take it as they get paid, they're just not motivated by money. If Starfleet officers get paid, then we can assume the Federation sets budgets for certain crew expenditures for their ships and missions and mission types. The Federation Council IS a governing body, after all. So, a Starfleet ship like the Enterprise may get a near unlimited budget for being on a deep space exploratory mission. But, Picard still has to answer to the bean counters when he wants to promote Worf (to a higher pay scale) or buy a redneck dune buggy to go off roading in.
Which brings us to Voyager. Voyager was a tiny ship of 150 or so scheduled for a roughly two week mission to hunt down a Maquis ship in a shitty part of the galaxy. Maybe this mission wasn't exactly glamorous or newsworthy enough to give Janeway an unlimited budget to spend on the highest ranking officers, which is why her first officer is a Lt. Commander and Operations officer is an ensign. More so, maybe this mission was hush-hush, since it involved former Starfleet commanders and Starfleet dropouts, so Starfleet didn't want a huge sum of credits on a sketchy classified mission showing up on the ledgers. Could be this two week mission was a test of her ability to work within said budget, and if she were successful in coming in under budget, when Voyager got reassigned after throwing Chakotay in the clink, they'd give her more money to work with.
But, that didn't happen and the Caretaker stranded them in the Delta Quadrant. Their Federation credits are no good in the DQ. As far as the crew knows, the ship will be out there for the remainder of their natural lives. But, maybe not. As soon as Voyager gets back to the Alpha Quadrant, 150 or so people are going to be wanting back pay for their time spent in the DQ. Captain Janeway can't be handing out promotions all willy-nilly because that'll bump up each promoted individual to a higher income. These would be 150 people that aren't in Starfleet's budget, because Voyager was declared lost and not calculated into the budget.
Also, these promotions wouldn't have gone through the official channels. What if Janeway promoted Kim to Lt. Commander, and when Voyager returned home, Starfleet brass decided he should only be a full lieutenant? That'd be awkward! What about Tuvok, you ask? Well, maybe his promotion was already in the pipeline when Voyager left DS9 and Janeway decided to go ahead with it, Starfleet bean counters be damned!
As you can tell, I've had way too much time to think about this today (slow day at work). All this is in jest, of course, but it's the only thing that makes sense for Kim not being promoted
