This sort of thing is very difficult, although normally a timer solution should work - perhaps you just need to increase the 'interval' of your timer?
The other thing to look into is the different types of Invoke command - if you check the SDK, you'll find that there are different values for InvokePolicy ( http://msdn.microsoft.com/en-us/library/bb189231.aspx ).
Try making the FIRST Invoke 'Synchronous', which means that it should try to actually run through the Focus event before it moves on to the next one. Make the last one low priority. But you will get varying results no matter what you do - the fact that Media Center doesn't buffer navigation events but allows them to override each-other is one of the most difficult things I've had to work around so far (there's a particular page in EMUCenter that STILL doesn't do it right!)