Answer:
It is technically legal, but it isn't good business!! Most companies only charge when they ship. It is against VISA and MasterCard's regulations for a merchant to bill their cards prior to shipping.
Contrary to what some sources indicate, the Fair Credit Billing Act does not address if it is legal for a company to charge you before shipping the product. Instead, it makes it illegal to not ship within advertised time period (or 30 days if no expected shipping date is mentioned in the agreement). If a merchant says "this item takes 90 days to ship", then they may bill right away and not have a legal problem if they ship before the 90 day window.
reference
http://www.ftc.gov/bcp/edu/pubs/consumer/credit/cre28.shtm