GitHub User: vlado
You can also use Time.current to get time in default time zone.
I've wrote rails engine https://github.com/vlado/rails_temporary_data that could be low level alternative when you have complex validations.
It just gives you helpers to easily save and manipulate temporary data (saved in separate table as serialized attribute) till you finish all steps (you'll need to define steps yourself).
I think it could even be useful in combination with wicked.