You can continuosly track the position of the cursor inside the figure window.
When the coordinates of the curor are in the coordinates of the the button you can change the color
To continuosly read the position of the mouse, first assign a callback function:
set (gcf, 'WindowButtonMotionFcn', @mouseMove);
Next, create the callback function:
function mouseMove (object, eventdata)
C = get (gca, 'CurrentPoint');
title(gca, ['(X,Y) = (', num2str(C(1,1)), ', ',num2str(C(1,2)), ')']);
Now in this mouseMove function you should have some sort of if state that tests if the cursor is moved into the button and if it is reference the button BackgroundColor propery to change it.
Perhaps also reset the color to default when the user has moved their cursor outside.