1) Use the hide object when setting in inspector for field 2 so that its hidden until field 1 has a value.
2) You could put a validation calculation on field 2 at the data level that validates always and does not allow user to override so that it is never allowed to be equal to field 1
There are other ways to do both of these things but these were the first two that came to mind.
Your choice of method depends on what user experience you want to produce.
For example using the validation options can produce a dialog that you dont have any control over.
To ensure Field2 isn't entered before Field1, I would do what coherentkris says, and hide Field2. And you could use a script on Field2 with the on object modify trigger, to see if the values are the same.
hiding field2 is perfect. validation calculation on field2 worked well; I need to learn more about script triggers but at least I know where to start : ) thank you both