I do same. Send invoice only upon completion.
However even order has failed, open or any other reason Ordered product list (not invoice) should be sent to customer.
I do get sometimes crazy situations on 4x when same customer places two orders in a role within few minutes time gap, second order somehow over rights first, but since I got order notification sent to customer for first one I re create new order from this list.
This is all great stuff where we are able to edit invoices/email notifications in an easy way, but the most important email notifications to me are the order status emails, it does not make sense to send an invoice for every order status. I only need to send an invoice to the customer on completed status and every other status should be something different. I have been using a work around for this since the early days of version 1.3.5 until now where I created tpl files for every status and use the include file in order_notification.tpl file, to send a different email for that status. I have full control over what information is being sent to the customer , for example if the order have a failed status, I don't need to send an invoice to the customer, rather I send information about why the order failed so may be the customer can come back and purchase again, I even use promo text in the emails . It will be very nice to have something like this implemented in an easy way.