Got a volt meter? Check your voltage across the battery terminals while cranking. Or trying to, anyway. Then check your voltage across the starter posts while cranking.
12.6-ish across battery, and 12.0 or less across the starter posts indicates a cable problem. Corrosion, damage ground strap, terminals pulling loose, etc. Many times you'll see the voltage at the starter drop as low as 4V when cranking if a cable is really bad.
About 12.2 or less across the battery terminals and about the same across the starter terminals means a discharged battery. Either the battery is toast, your alternator isn't charging it properly, or you have a draw somewhere, killing your battery while parked. Charge the battery and test it. A fast charge on a deeply discharged lead-acid battery will shorten battery life, especially when cold. If you have the time, leave it on a trickle charge for a day or so.
12.6-ish or better in both places indicates a failed starter or failed relay in the start circuit. Be careful about smacking it with a hammer as that can cause internal failures more easily than you'd expect.