I would be pulling the starter and cleaning up the contacts on the solenoid (or just flip them over). Sounds like they have too much corrorion buildup on them and not letting the full current through! You will have to take the solenoid off the starter to do it as they are inside.
As a test to check the lead to your starter (as mentioned) put one end of a good set of jumper leads onto the starter end of the lead that is attached to the starter and the other end to your battery positive terminal, if it fires straight up you have a dodgy lead and need to replace it, try that first. Also put the other jumper lead onto a good contact on your engine and the other end onto the negative of your battery, this just ensures a good earth!
Hope this helps................Pete!