<p>When a user clicks in certain places in my control, I want to change the color of some rows and columns in my grid, then fade it back to the normal color, within say 500ms or so.  I haven't decided whether to use Winforms or WPF yet, so advice in either of those technologies would work.  Thank you.</p>

<p>Edit: I understand I could do this by just calling Paint in a loop within the click event, properly setting the drawing parameters.  However I believe that would block the UI, and I would like to be more responsive than that.</p>

At its simplest, a fade effect like this just requires a timer of some sort that gradates the color back towards normal with each tick.  The faster the time, the more discrete colors you will display from start to finish, and the smoother the overall effect will be (WPF may have something built-in to do this).
You definitely
do not
want to repaint in a loop.  As you pointed out this will block the UI, and also you would not be able to control how long the loop takes (different machines will render the same number of steps from highlight color to normal in different lengths of time).