That solution will create a lot of interference on the mains because of the frequent switching of a high power device other than on the zero crossing. As the device is a heater, you can switch it much more slowly. I would use a zero-crossing SSR to control the heater and program the Arduino to switch it on and off with a cycle time of maybe 5 seconds.
... Fine control of a heater can be done with a variable voltage supply. The voltage supply acts like inverting amp to take an analog voltage control signal and amplify to the right voltage range and power the heater with this output....
I've no doubt it can be made to work, but preventing it from interfering with everything else in the area and on that mains circuit would be a major problem. What do you see as the advantage over a phase angle SSR?
Have you tried using a zero-crossing SSR and switching it on/off potentially on every cycle of the mains? For example, when you want 50% power, instead of 0.5 sec on then 0.5 sec off (which might give a noticeable flicker), turn it on for 1 cycle, then off for 1 cycle, then on for 1 cycle etc.