I had a homebrew game system once upon a time where character advancement was done on-the-spot; it was essentially a percentile system and every time they succeeded or failed a skill roll within a 10 point margin, they got an experience check. To do this, they rolled on the skill in question, and if that roll was a failure, they got +1% to their skill. They also got experience at the end of the session to apply to skills they specifically wanted to improve.
The players all liked this, because they got to watch the characters grow before their eyes, instead of just session-by-session, and because an experience check was like a chance at "free" experience points. It also really enhanced the "you improve at the skills you're actually USING" concept that I was trying to establish. The problem was that it had a tendency to bog down play (the Blade Combat skill got a lot of experience checks, in the middle of combat, for instance), and it also tended to make people mediocre in lots of different things rather than good at any one of them -- skills that had high rolls were statistically much harder to improve with an experience check.
I don't know of any good way to implement that in
D&D other than awarding lots of story experience during the game session. "You solved the sphinx's riddle! 100 XP all around." But unless you're going to also let people level-up on the spot, you're just as well served to do it all at the end of each session. Less frequently than that, is not much fun from a player perspective IMO.
-The Gneech