The user can definitely download the file at a later point in time. There are two ways to approach this:
Managed Purchases
A managed purchase is a one-time in-app billing purchase. These kinds of purchases would be for things like permanent access to content or permanent upgrades to an app (think "pro" versions). If your purchase is a managed purchase (which means the Google servers always know about the purchase) then you can follow your steps 1-6 at any point in time, allowing the user to download the file at their convenience.
Unmanaged Purchases
An unmanaged purchase is for things like video game money, where you want the user to be able to make the purchase multiple times. Unmanaged purchases need to be handled by your servers and cannot involve Google Services after the transaction has been completed. In this case, you register the purchase with your server, and then afterwards you can allow the user to download the file at any point in time simply by authenticating them with your server.
Let me know if you have any additional questions and I would be happy to help.