Could be anything. The silver can between the two black Bosch relays is the starter relay, and if you pull that one out (the relay socket looks like a Christian cross when you're staring at it) you can jump across the contacts with a suitable guage of wire and see if the starter engages then. Those relays suck, but they generally weld themselves closed rather than going open. Failing that, a poor battery-to-battery connection or a poor +24V top battery connection (nearest the firewall) will show symptoms like that too -- I had that intermittently all summer until I found the time to change out the dodgy cable.
Also, I've had it where one starter bolt breaks and the starter misaligns itself to the point the bendix gear tries to throw but can't. Might want to have a look underneath and see if you still have two starter bolts.