B4787 has the right idea - if the starter just spins but doesn't catch it's the starter drive (the small gear/clutch driven)
Before doing anything try just pulling all the cables off from top of starter and cleaning them with a small wire brush. Dirt, grease, etc... accumulates there and causes resistance. When cables sit overnight/cold they contact - when you hit the key they expand (minutely) and make contact. Any dirt or grease forms resistance. There is also a small cable among that group that goes to your ignition - if it's dirty or worn you'll get the same symtoms. I've been that route - 93 E34 -M50
