don't need to overnight, you can get to Fort William by 10am by either train or citylink bus
and yeah, local taxi firms will get you to Mallaig, but arrange it in advance. Might find they have several people trying to do the same journey and can share the cost