is there a way to restrict user from changing deal stage until he enters a specific data ?

is there a way to restrict user from changing deal stage until he enters a specific data ?

I changed the default deal stages, and I need the user to enter data when switching to specific stages 
for example, if the user changes the stage from "Negotiation" to "First Payment"
he must enter the amount of the first payment received 
I made a workflow rule on the required "First Payment Amount" field to show it whenever the stage becomes "First Payment" but when I test it the user could change the stages without entering the field
so how to do that ?