You seem to covered most possibilities. If you've replaced the starter motor then it's unlikely to be the starter solenoid. More details on the car would help, age, mileage etc. If it's an old or high mileage car then one possibility is a worn starter ring gear on the flywheel.
Next time it fails to start, try pushing the car in gear, handbrake off, ignition off. You don't have to push it far only about a foot! Hopefully this will move the flywheel round a little bit and then try starting it.
If all else fails NORMAN THE DOC will come to the rescue!