First check the ground straps. The connections on these must be clean, Clean, CLEAN. There is one down by the starter that is a likely culprit.
Having said that, I had the same problem about a year ago on my '96. After doing all the usual things (checking terminals, connections, etc.), I determined that it was the starter. It took all of a day to remove the starter, as one of the starter bolts was frozen and needed an in comprehensible amount of torque to break, plus finding the right socket/tool to remove the starter bolt). Once removed the starter worked perfectly.
It turned out that the Positive battery cable had corroded internally. The wire looked normal at the terminal, as all the wires looked shiney, but the middle of the cable had been eaten away, and it wouldn't carry the starting current. I realise that this is a freak thing to happen, but it is worth checking before trying to wrestle with the starter heat-shield, and possibly frozen bolts.
It is easy to check, by running a jumper cable from the starter terminal to the positive terminal of the battery, and trying the starter.
-Reed