Sounds like you have covered most of the bases but here's a couple of other places to look. You say you tested the battery but you didn't say how. Did you put it another car and see if it started that one? A battery can show 12 volts with no load but drop below 10 with a load. You can test that by having a volt meter on the battery when you try to start. There will be a drop but not below 10 volts if the battery is working fine. If there is no drop at all then power is not leaving the battery. Use the volt meter on the battery posts not on lead terminals. This can be one of two things. The terminals on the battery aren't clean enough or an earth connection has a high resistance.
If the starter has been changed, then you may have to loosen the mounting bolts on the starter just enough so you can move the starter and try clicking a couple of times on the key. Sometimes when a starter is fitted it can be tighten slightly out of alignment and could be binding on the ring gear. A couple of jabs on the key with the bolts loose will bring it back in line.Retighten the bolts. If it does work with the bolts loose but doesn't when they are tight then there must be dirt between the starter and the motor causing misalignment.
Hope this helps, if not and you find the trouble, love to know what it is.
|