What has been posted is indeed valuable and useful information, but it is not sufficient to fully achieve the objective. It's not necessarily the Form_MouseMove event that is needed to return the button to its normal stated, but rather it's the container of the button that you need to look at. You can certainly design the form so that the form is always the container, but you can also put the button inside of a frame, or a grid, or any other control which can act as a container. If you do so, then you'll need the container control's MouseMove event as well. You also have to insure that sufficient white space exists around the button in order to catch the container's mouse move event.
You also need to handle the focus issue. To see what I mean, place the cursor in a text field, and then move the mouse over a button. No doubt the button duly highlights itself. Now using the TAB key, tab to a button that is not highlighted, and press the ENTER key. Which button's event is triggered, the Highlighted button, or the button with the focus? You may now have a confused user on your hands.
I also wonder, and this I haven't checked out, what will happen if the application loses focus, the move is moved, and then when the application comes back in focus, by clicking on the window title, what is the state of the button's display, with respect to the cursor location, and which control has focus.
Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein