I finally fixed this problem and hey presto all works well.
My primary email address in my Paypal email settings was different to my email address on my Woocommerce Paypal settings preventing it from pinging back and sending out the download link. So make sure they are all the same.
Woocommerce > Checkout >Payment Gateways> Paypal Settings>
Set the Paypal and the Receiver Email fields with the same email address as your primary
PayPal email on the Paypal email settings.
Before I discovered this I also purchase a plugin form Woothemes, "WooCommerce Order Status Control" Automatically change order status to complete for all orders or just virtual orders when payment is successful
In WooCommerce>Settings>General> a new field appears with this plug where you can select Virtual Orders to Auto-Complete.
Hope it helps :)