So if I read all of that correctly:
- there are 22 "dim/bright" levels
- only "dim" and "bright" commands exist.  
- so to dim 20% roughly 4.4 dim messages must be sent.
- according to http://www.madreporite.com/insteon/x10.html the delay between messages is only to avoid overloading the PLM.

The new insteon code already has PLM "overload" prevention, although I will need to check to see if it applies to X10 messages as well.  So theoretically, to dim a light by about 20%, we would just need to put 4 dim commands into the queue and walk away.  The rest of the code should handle the sending.  Seems easy enough, although since X10 messages are not ACK'd, if one is missed, the light will dim to a different level.

I will try and look at this more this weekend, but that seems really easy to implement.