There are at least two different kinds of heat maps:
- Heatmaps representing concentration of points, and
- Heatmaps representing distributions of attribute values
Every method has advantages and problems, I'm afraid going into detail is far beyond this Q&A.
I'll try to list some methods and functions for QGIS and GRASS.
Concentration of points
If you are tracking movement of wildlife, vehicles, etc. it can be useful to assess regions with high concentration of location messages.
Tools: e.g. GRASS v.neighbors or v.kernel
Distributions of attribute values
Here, we're basically talking more or less about interpolation methods. Methods include:
- IDW
Depending on the implementation this can be global (using all available points in the set) or local (limited by number of points or maximum distance between points and interpolated position).
Tools: QGIS interpolation plugin (global), GRASS v.surf.idw or r.surf.idw (local)
- Splines
Again, huge number of possible implementations. B-Splines are popular.
Tools: GRASS v.surf.bspline
- Kriging
Statistical method with various sub-types.
Tools: GRASS v.krige (thanks to om_henners for the tip) or using R.