I've always believed that the billet for an operations officer aboard an Intrepid-class ship only warranted an ensign (the rest of the department consisted of enlisted personnel). Promoting Kim really wasn't necessary unless Janeway wanted to give him greater authority over Paris and Torres. In Janeway's chain of command
, Kim was exactly where she wanted him to be (it would be a different story if the Voyager
was still in the Alpha Quadrant where people could transfer to other ships for advancement--Kim could have been a lieutenant aboard another ship or if Paris & Torres transferred, IMO).
Unlike real-world navies, Starfleet really doesn't have a problem if an officer stays at the same rank for a very long time. The exception might be if an officer refuses
a promotion more than a few times, because it tends to send a message that officer doesn't want to advance and is content where they are.