The 74HC4050 looks good when the microcontroller wants to send back data, e.g. for the verify cycle.
I don't know much either about analog circuits, but I think it is called high-side switch what we would need, like this:
http://cq.cx/interface.pl#13I tried to simulate it in LTSpice, but it switches really slow:
If I reduce R3 to 100 ohm, it gets better, but then the transistor Q1 might get very warm. There are all in one ICs as well for high side switches, but not as fun as DIY
For the voltage regulator, just look at the
datasheet of the LM317, figure 3, and the formula for R1 and R2 in chapter 6. It works up to 37 V, but it is a linear regulator, so it gets hot when the programmed IC needs much power (e.g. supply voltage is 20 V, you want 8 V output, and with 100 mA, then 12 V * 0.1 A = 1.2 W is dissipated in heat at the regulator). But should be fine with a 12 V power supply to generate all voltages. Could be generated with a step-up converter, so that it would work with a 5 V USB power supply, or even from the USB port, if it doesn't need much power.
I think first we should measure the required currents and the required timings. Then we could design the programmer circuit. I guess it doesn't matter if it needs like 100 us to turn on a higher voltage for VPP with a relatively high current. We could use a few of these high side switches to select different voltages. But then for the logic signals, which might need only uA, we could use 4051 multiplexers to switch the VPP signal to and from the logic inputs very fast.