To be fair they had Hilary Clinton being massive favourite in 2016.
I believe most polls had her narrowly winning. A lot of people bring up Trump winning as proof that polls shouldn't be taken seriously but I believe it was always in the margin of error.
With another opponent I think Trump would likely lose. But Biden is a lot less popular and trusted than last time around.
The BBC panorama programme did an episode on Trump re-election and even moderates (including African american) were saying although they didn't like either candidate, America was better under Trump.
I think the cost of living crisis has hit Bidens term hard. Whether its his fault or not, it's the perception that counts. The economy is generally one of the key things for voters before anything else.
The two party system doesn't help either.
This isn't really accurate.
For one thing the Democrats aren't just sticking with Biden just to be nice to an old man. Tons of research is done to show which candidate does better against which opponent and consistently shows that Biden does better against Trump then any of the big DNC names. The reasons being that swing voters that usually lean conservative but are wary of Trump are more likely to switch for an old white guy than they are for a younger candidate or one of colour or woman.
Also there is no cost of living crisis in the US. Like almost everywhere they were hit hard by covid but has bounced back under Biden. Right now the US economy is very strong. Record high employment, generally high wages, the stock market is also at record highs. True perception matters and even though the economy was pretty good under Obama you often heard voters in rust belt ststes say they just didn't 'feel' it. With the media being so partisan it's difficult to gauge how the public really feel but it should be noted consumer spending is up which is usually a good indicator that people are comfortable enough to spend their money.
Biden has also had a number of legislative victories like the inflation reduction act, lowering prescription drug prices and even getting through some of his student loan forgiveness despite the courts trying to scupper all of it. For my money he'd have it in the bag if not for his handling of the Israel/Gaza conflict. That's more than anything will drive voters away from him in key states and could allow Trump to sneak in.