Sounds like battery terminal corrosion. Look at your battery- if there is any green or white powder around the terminals, disconnect the negative terminal, grab a coke and dump it on the corroded terminals. (coke has some nasty properties that make it great for cleaning both toilets and battery terminals)
If you don't have corrosion on the battery, you most likely have a loose connection at the starter, or the ground strap from the firewall to the engine is corroded/disconnected.
another possibility is that your ignition switch is wearing out; not likely, but possible.