I can sketch the solution for you, but, since I do not own a Windows system, whether virtual or physical, I cannot really test it. Yet I have tested it with two Linux systems, and it works (I am writing through exactly this configuration right now). I will assume that you are using VirtualBox, it should be possible to achieve the same result in VMWare. Also, don't be discouraged: though it looks complex, most of these steps need to be performed only the first time you set this up, the second time you will want to enable this you will breeze through these steps.
Let me give you the basic idea: we configure the VM as if it were a physical machine: two network cards, one local to talk to the host, the other to talk to the internet. Then we force the host to use the guest as its router, erasing the old gateway.
In order to allow the guest to route correctly the packets from/to the host, we enable IPv4 forwarding on the guest. Then we start the VPN.
1) Configure your VM to start with 2 network adapters, one for bridged access, the other one for Host-only connection. Configure the Host-only connection to have a DHCP server at 192.168.56.100, and to dish out IP addresses 192.168.56.1 (to the host, say) and 192.168.56.2 to the guest.
Let me give a reference on how to do this: see this AskUbuntu excellent answer
2) start your virtual machine, make sure you can connect to the Internet and can ping to/from Host.
3) On the host, diable IPv4 forwarding:
sysctl -w net.inet.ip.forwarding=0
4) again on the host, change your default gateway to be the guest 192.168.56.2:
ip route delete default
ip route add default via 192.168.56.2
5) Now let us go back to the guest, and enable IPv4 forwarding: you can find instructions on this Microsoft page.
6) On the host, check that you have connectivity, for instance ping a pc on your LAN.
7) now start the VPN, and you should be good to go.
Should this fail (and here I apologize because I cannot test this since I do not own a Windows system), you may try to invert the order of steps 5 and 7 (never mind 6).
To cover all the bases, I would also like to add that, still
in the case of failure, you should consider also the following point. When you start the VPN, a new interface is created, generally (but not necessarily) called tun0/tap0. Linux demands that you explicitly forward IPv4 traffic from the incoming interface (which in your case is the host-only adapter) to the outgoing one, tun0/tap0. Through Google, I have been unable to find out how Windows manages to do that: in other words, it appears from Googling that you do not need to specify he outgoing interface explicitly. If the above fails, but you have successfully achieved step 6 (that I am quite sure works), you will have to investigate further this point.
Like I said, I am writing right now from exactly the same configuration, realized, however, with two Linux machines; the set up of Mac OS holds no difficulty, since it is a Unix system. Conceptually, it should make little difference which OS you implement it with, it is just a matter of finding the correct commands for achieving the steps above.
And thank you for providing an amusing project.