Could be anything really.
The most commong things to check are:
-Battery
-Alternator
-Starter
-Fuses
But sounds like your starter motor is playing up. Usually theres a solenoid within the starter that either wears out or gets jammed, which is why banging the crap of of your starter allows it to crank over.
Get out your multimeter and check your dc voltage for everthing, and even your resistance on your leads, and also check your dizzy points.