You can do basic PWM with the built in Arduino commands.
The ATMEGA cpu's actually have pretty powerful and versatile PWM features and to use them fully, you need to look at the cpu data sheet.
It usually involved setting up an interrupt routine to allow for properly synched changes and direct writing to the PWM control registers.
The key thing is do you know how you want the PWM registers to work? Do you want to be loading values from a lookup table into the PWM to create the sine wave? If so how often do you want to load a value. The shortest period the Arduino cpu can manage is an 8 bit period loaded every 16us, or a 10 bit period every 64us or a 12 bit every 256us. There is another PWM that makes symmetrical pulses, but you have to double the times above.
You need a gap between the mosfets on one side of the bridge turning off and the opposing one turning on - how are you going to generate it? (needs to be hardware, not software).
Designing a PWM to handle KW of power needs a lot of design skill - it is probably not as simple as you think. It can be dangerous work as you need goggles or a blast shield to test the inverter, and it is very difficult without tools like the differential probe that Dave is offering. You will go through a lot of blown mosfets and diodes before it works so it will cost more then you think. Dangerous voltages everywhere.
If you are keen, try a low power (5vp-p, 1.7V RMS maximum) inverter first. I would then move on to a 10W inverter. Then at least I would have learnt some of the problems in designing a 5kW inverter (or whatever you want).
Richard