Note that the $2M is to launch a fully loaded (100 tons of payload) Starship into low earth orbit (LEO). Launching it further, such as to the Moon or Mars, requires refueling while in-orbit. I've seen estimates from Musk that it would take 6-7 launches of a tanker variant of Starship to deliver enough fuel to fill an empty Starship (it could be stockpiled in an orbital depot ahead of the main payload launch). So the total launch cost might be more like $15M for a fully-loaded ship. Which is still crazy cheap compared to SLS ($2B/launch), and Falcon 9 costs $15M just to get 13 tons into LEO.