Some considerations to factor in:
1. What CPU are you running? AMD CPUs with the Brisbane core had broken thermal sensors and gave obviously inaccurate temps, especially at idle.
2. Are you sure you are measuring the same thing with all the programs? Some may be measuring core temp and some CPU temp. They are different. Core temp readings refer to the internal temp of the processor itself wheil CPU temps refer to a reading in the socket area below the CPU. They are usually withing a few degrees of one another, however.
3. Speedfan's labels are often wrong. That is to say it often incorrectly identifies the various sensors in the system. If you open up the program, run Prime95, and watch the deltas you can easily identify which temp readings go with the cores/CPU as opposed to say, chipset sensors or other environmental sensors on the motherbaord. The core/CPU readings will rise very quicly compared to the others and the core temp readings will usually be a little higher than CPU temp readings when max is achieved. Speedfan is a wonderul, very useful program. It just needs a little tweeking. The labels can be edited, by the way, to match sensor names with their correct temps. Keep in mind also that currently, Speedfan only gives one core temp reading even when you have a multi core processor. I think it either takes the reading from the hottest core or averages them.