Here is my callstack of the triggered OSD: http://xbmclogs.com/show.php?id=208375
As you can see, no function appears more than once in the callstack, so there is *no* recursion in the computer science acceptation of the term. 

What you are describing is infinite *iteration* on the message loop. Infinite recursion would get you a stack overflow in no time ;)

You're right that the triggering is delayed by one frame, but it's probably of no importance for OSD popping ;)