It seems tough to believe that 300 men fought off a force of by some estimates 2,000,000
We can't know the numbers accurately, since we have few detailed sources, and the single best source (Herodotus) is not consistent. However, the sources that we do have are sufficiently in agreement for us to come up with a reasonably reliable estimate. The Greek numbers appear to have been:
300 Spartan hoplites
700, 900, or 1000 Spartan helots. Reconciling the two different numbers of Peloponnesians, 3100 and 4000, given by Herodotus by assuming that the smaller number doesn't include helots (who were present according to Herodotus, but he gives no explicit number) gives 900. Diodorus Siculus gives 1000, but this might include the 300 Spartan hoplites, leaving 700. It's also possible that these included (or were) Spartan non-citizens other than helots.
2800-3000 other Peloponnesians
700 Thesians
400 Thebans
2000-3000 other Greeks
The ones highlighted in bold stayed for the last stand; the other retreated after the position was bypassed. The Thebans opted to surrender rather than die. Of the Thespians, Herodotus notes that they
very gladly remained, saying they would not abandon Leonidas and those with him by leaving; instead they would stay and die with them.
So, rather than 300 Spartans trying to stop the Persians, it was about 7,000-8,000 Greeks. Instead of last stand of 300, it was a last stand of approximately 2,000, after the rest of the army retreated.
How large was the Persian force? Herodotus gives a very specific number, but also made it clear that it was an estimate. He wrote that
the sum total of fighting men is two million, six hundred and forty-one thousand, six hundred and ten. This then is the number of soldiers. As for the service-train which followed them and the crews of the light corn-bearing vessels and all the other vessels besides which came by sea with the force, these I believe to have been not fewer but more than the fighting men. Suppose, however, that they were equal in number, neither more nor fewer. If they were equal to the fighting contingent, they made up as many tens of thousands as the others. The number, then, of those whom Xerxes son of Darius led as far as the Sepiad headland and Thermopylae was five million, two hundred and eighty-three thousand, two hundred and twenty.
This total of about 2,600,000 soldiers, and a total force 5,300,000 is unrealistic; an invasion force of this size would have been logistically unsustainable. Numbers such as these should be read as "much larger than our army", and not taken strictly numerically. The Persian invasion force was certainly much larger than the Greek army that opposed it, but was more likely to be about 200,000. Given the lack of reliable numbers in the ancient sources, modern estimates vary a lot, from about 100,000 to 500,000; about 200,000 appears to be the best guess.
This, giving the Persians about 30 times the numbers of the Greeks, is still an overwhelming force, unstoppable by a mere 7,000 except in ideal circumstances. The narrowness of the pass appears to have restricted the Persians to attacking in waves of about 10,000, so the numbers that could be committed to the battle at any one time by either side were the same. The Greeks were helped by being better armed, and by a defensive wall. How long they could have held it against repeated Persian attacks is something we don't know, since the Persians bypassed the position and threatened their rear, resulting in the retreat of much of the Greek force. Herodotus mentions 4,000 Greek casualties, which if correct means that the Greeks took severe casualties even before the last stand, and might not have been able to hold the Persians for much longer even if they weren't bypassed.
For a discussion of the numbers of the Greek contingents given in the various sources, see Nicholas G. L. Hammond. (1996), "Sparta at Thermopylae", Historia: Zeitschrift für Alte Geschichte, 45(1), 1-20, http://www.jstor.org/stable/4436404
It's possible that the Greek force was significantly larger than these numbers indicate - the numbers given for each contingent might only be the number of hoplites, and not include helots or other light-armed troops. However, even if uncounted-in-the-sources light troops were present in large number, the Persians would still have had an overwhelming numerical advantage.
We don't know exactly, but there were probably 1,000 Spartans (not counting their enslaved attendants, whose number is unknown) and between 5,000 and 11,000 other Greeks present at Thermopylai. I discuss the problem in more detail here (and I highly recommend the podcast too!)