In Forms 2.0, it seems that when you need to guarantee the order in which fields display from top to bottom it can be tricky to deal with. Sometimes you might want the progressively profiled fields on top of visibility dependent field sets. Other times you might want to just make sure that an email opt-in checkbox will always be the last field to be displayed, no matter what.
I recommend having functionality similar to the Program Status's Step values. Add an "Order to Display" numerical value that a user can set. Then as the form is rendered it looks at the numbers of each field and orders it accordingly.