Alternative answer without PWM. (First, I absolutely agree that PWM is better : it's more power efficient, meaning less heat to get rid of, and less stress on the batteries and better battery life).
However, power MOSFETs can be used in their linear mode.
As you've discovered, in their linear mode they dissipate a lot of heat. Let's say for the sake of argument, you're running an 0.1 ohm load, at full power that would be 8 volts, 80A, (640W) with the MOSFET fully on. But you want to control the power - the worst situation would be half power - sharing voltage equally between MOSFET and load, 4V,40A,160W in each. The load can presumably take it - the naked MOSFET can't... unless you dissipate that heat safely in a heatsink.
Basic heatsink math : each part of the system has a "thermal resistance" which drops temperature (not voltage) as heat power (not current) flows through it. Working back from ambient air temp, you can calculate how hot your FET is, and its datasheet tells you what it can tolerate. (I picked the IRF540 as an example, I don't know your FET.)
First test: No heatsink. Datasheet shows: "Thermal Resistance : Max Junction to Ambient: : 62C/W".
So at 160W, and 20C air temperature, the junction could reach 160*62 + 20 = 9940C. Let's check the absolute maximum temperature in the datasheet : 175C, so we have a problem...
Second test : With a heatsink. How big?
First you have to get heat from the junction to the case...
Datasheet shows: "Thermal Resistance : Max Junction to Case: : 1C/W".
At 160W we need a bigger MOSFET so I'm going to reduce the power to 40W for this calculation - with your MOSFET, YMMV. (You CAN parallel MOSFETs, but each would need slightly different drive voltages so it's not easy, but you could use 4 of these each on its own heatsink).
Anyway : let's keep the junction temp well below abs max - say 140C. At 40W that corresponds to a case temp of (140 - 40 * 1C/W) = 100C. (See Fig 9 in the datasheet - at 100C drain current must not exceed 20A).
So the heatsink must not be allowed to exceed 100C, with air temp of 20C that means the resistance of the heatsink must be less than (100-20C)/40W = 2C/W.
Aim for better than this - say 1.5C/W - because I glossed over how well heat got from the case to the heatsink for simplicity.
Now we can look up heatsinks better than 1.5C/Watt. Here's an example: it's about 6 inches long and 2 inches high. For 40W. I'll let you run the numbers for your MOSFET and power levels...
EDIT: to comment on the 555 option.
555 will probably work fine. Keep switching frequency low : for a heater, 1Hz may be good enough - or 10Hz or 100Hz. This minimises switching losses (while the gate is charging, and the MOSFET is somewhere between On and Off.)
Don't bother with a control voltage, just control the ON/Off ratio directly with the pot. (you may add resistors at either end to keep it working with the wiper at each end). Build and test that without the MOSFET, then add the MOSFET and check the gate voltage with a high load (10 ohms) then finally a real load.
And use a heatsink ... though you should be able to get away with a smaller one!
IGBTs have high voltage drop and are not suitable for low voltage switching. They only exist because reliable high current high voltage MOSFETs are hard to make.
You should use high current MOSFETs rated at 30~40V. Maximum current is often package limited, but several FETs can be wired in parallel to increase current handling. For example the IRFP7430PbF is rated at 404A, but package limited to 195A. Rdson is 1.3 milliohms, so two in parallel should drop 0.13V at 200A (= 13W per FET). In comparison an IGBT module could drop 2V or higher, resulting in 400+ Watts of heat to get rid of!
The advantage of a module is less wiring and simpler installation. One disadvantage is that it's toast if even one transistor dies. Also an IGBT module may be much more expensive than a few discrete FETs.
Look at page 4, fig.12, graph of safe operating area. That is exactly what you need.
You are talking about single pulse, right? You didn't mention any repetition or timing at all. If you open mosfet hard, say Rdson is 0.85mOhms. In case of 1000A the Vds will be less than 1V, so you have to look at the left side of graph.
There is no line for 100ms pulse, so you have to interpolate between DC and 10ms pulse. The safe current is much lower than 1000A. It is like 400A. And it is the maximum.