The reason why this is in principle unreliable is caching - likely both in the host kernel and by the guest (both the VM and the OS). In the first case, the host kernel caches the writes and doesn't realize that the data in the VM image file mounted somewhere has changed.
In the latter case, tha VM (me it KVM or something else) will likely cache the writes into the image and only perform the write (i.e. giving the data to the host kernel, which by far doesn't mean the data will get written to the underlying medium, by the way) at a more convenient time. This can be alleviated by requesting the VM to make the writes immediately (for QEMU/KVM see the cache option for the -drive argument in the qemu(1) man page). On top of that, the quest OS does some form of caching as well, so it may take a while before the data hits the Guest/VM boundary at all.
That said, sharing data is usually done via network - your options are numerous. For Windows the obvious option is CIFS/SMB, since that has native guest support. All you need to do is to figure out the approipriate Samba configuration on the host. If you happen to be using QEMU/KVM, it can even do some basic samba sharing for you - see -net user,smb=... (source same as above). You may also set up FTP or WebDAV on your host, although the latter might get a bit trickier than Samba. SSH/SFTP is another option.
Specific to QEMU(/KVM) is the virtual fat, which allows you to export an existing directory - subject to restrictions, be sure to read the "What you should never do" paragraph - as a FAT file system to the guest.