I am having this problem as well – I have the latest version of WordPress and Woocommerce. When I add a product as a “virtual” one and hit “publish”, the virtual option is unchecked automatically and then customers are charged shipping costs. This does not happen with downloadable products, just virtual.