I had the same problem last year and it turned out to be the ignition switch. Eventually I had to replace the starter too because it fried from being spun by the engine.
To test, try squirting some contact cleaner into the key slot of the ign switch.