Unless you need high level of compartimentation, I would "cheat" a bit and split the process in 2:
- One part before registration (anonymous)
- One after to "complete" the registration (registered)
At the end of the first part end with a validate your email process and customise the "success" url with a tracker form for the returning user (now registered) so he can feel other part of its user item like upload a file.
This is very common in many website and should be no problem.
At taht stage they can review information and submit payment again as registered users.