Depending on the overall design, of course. Eg. If your game has distinctive levels/"dungeons" the player passes through, that can be used to set the pace (something like a reward screen after each zone, where you get to buy new skills). If the player is collecting points to trade in for skills (where skill A might cost 50 xp and skill B 150), you can simply let the player purchase skills at any point, as glitch suggested. The choice would stand between getting skill A now, or saving up points to buy skill B later on. On the other hand, if your character progresses from level 1 to level 9 with skills scaling automatically, it's probably ideal to level up as promptly as possibly. I guess that's why so many (D&D-inspired) rpgs level up automatically whenever you have the xp, sometimes in the middle of a fight. It can feel a bit silly, but works well in many cases.
I've been pondering the same problem for my own game, which is more of an open world-thing. I don't want a system with xp for killing enemies, so I'm trying to connect experience to quests/achievements/something. One idea I had is to level up whenever the player explicitly rests for an extended period. Resting would cost time and resources, but also be the way to heal long-term wounds (pay to lodge at a saloon or hospital). Maybe I'll try a little "level up"-screen whenever the player rests, where they get to distribute skill points, depending on how many quests/xp-somethings they have collected. A player who has done poorly can rest to heal, but won't get any skill increases (and might even be penalized with stuff like war wounds if done too often). I'm quite unsure how it's going to turn out, as there are many moving parts, but I hope it can become interesting to play (or at least design
)
As always,
Minotauros