Correct that the Order object does not get created until you come to the Payment Screen (then an order is 'created' and marked as unpaid until payment is made).
Guest checkouts can be tricky because there's no UserID attached to them, and the CurrentShoppingCartCustomer may be getting lost after the shopping cart is converted to an order.
There is probably a better way to do this, but short on time so at minimum you can look to do a catch on the Ecommerce global event hook for the order creation, and then either set a custom Macro value (using MacroContext.CurrentResolver.SetNamedSourceData(String, Object, Boolean)
) to store the OrderID that was just created for this user, then you can reference that when looking up orders.