I use the Shipment for Virtual Products plugin to sell virtual products with VM2. It's a good plugin, but when I installed it I had two issues to solve:
1. The download link did not display in the email
2. When I did get the download link to display in the email, all that would download was a tiny 2k file that was not the product.
If you are having these issues, here are two observations I had to fix these.
Observation 1: No download link in the email
The virtual attribute is applied to a product by adding a Custom Attribute. If there is more than one Custom Attribute this can affect whether the download link will display in the email. From my experience, the Custom Attribute for the virtual product has to be the last attribute in the list of attributes for any given product. If you are having the issue that the link is not in the email, check the product and make sure that the virtual product attribute is the very last one in the list of the Custom Attributes. If you add new attributes later, make sure to move the virtual product attribute down to the bottom of the list.
Observation 2: Virtual product does not download, only a small 2k file is downloaded
By clicking the link in the email or the link in the Order, what should happen is that the virtual product should start downloading. If only a small 1k or 2k file downloads instead, check the download link carefully. In the link you will find an ID number in the link. I sell videos in my store, so my link has this in it, "download&media_id=208". To solve the issue of the file not downloading correctly, I went to the Virtuemart 2 Control Panel and clicked on Shop>Media Files and looked up the media file with that ID number. I clicked on that product in the Shop>Media Files to look at the information for that file. There are three critical things that the file will need to download successfully. First, make sure the file check box is checked for Publish. Next, make sure the Role is set to For Sale. And last, but most importantly, make sure that the Used Url is filled out with the correct Safe Path to that specific product file. If the Used Url form box is blank or has the wrong entry, the file will not download. The Used URL is NOT a URL! It should not begin with "http://" The Used URL is a relative path, beginning with the Safe Path, like this /Directory Name/File Name
If you are unsure of your Safe Path, go to the Virtuemart control panel, Configuration>Templates and look for the Safe Path. As an example if your Safe Path in the Configuration>Templates is /home/Joomla2/vmfiles then in Shop/Media Files the Used URL entry for the product should look like /vmfiles/product_file_name. Your names will be different, but that is the pattern.
I am only a shop owner, not a software programmer. I hope these work for you, but if they don't I'm sorry, I cannot help further. I only got this to work through trial and error! I do not speak for the owner of this plugin and am only posting my observations in the hope it may help others.
Good luck with your online sales, I hope that you sell lots of virtual products!