A lot of the answers above seem flawed to me in that they assume, usually without stating the assumption, that the coin tosses are stationary in time. Stationary in time means that the underlying random process doesn't change over time. So one would have an incredibly low probability of tossing the coin 10,000 times and getting 90% heads, and then later tossing the coin another 10,000 times and getting 90% tails.
But consider how I might build an unfair coin using modern technology. My unfair coin would be a tiny machine with voice activated controls, keyed to my voice only. I'd have one word that turned off the bias, so that while the coin was in this "fair" state it would indeed behave indistinguishably from a "fair" coin. But when it came to making the big bets, I would have another word which activated the coin's bias. Then make my money, then I'd utter the word to set the coin back to "fair" again.
A strong argument could be made that even an infinite number of tosses might not determine if this coin is fair. If I never utter the word to set the coin to biased, then even an infinite number of tosses will behave indistinguishably from a fair coin.
I suspect some philosophers might consider my fair coin "cheating" for the purposes of this question. I would counter that such a concern is not sensible. The entire point of an unfair coin is to "cheat." By unfair, we essentially mean "behaving differently than naive expectations, but in a way predictable to those with knowledge of the unfairness." If a particular form of unfairness is not predicted by the philosopher, as we say in software this is a feature, not a bug.