I think the biggest mistake was adopting Windows as their OS. It negated any technical advantages they could have over Android.
I'm not so sure. There will always be viable alternative histories of course but their existing Symbian OS was already long in the tooth and would have required a lot of work to catch up to the smartphone world and I'm just not convinced they had it in them.
Arguably they should have just gone with Android, and it's easy to say that in hindsight. But Android was a horrible mess in its 2.x era, Windows Phone seemed like a genuinely interesting alternative. Until Microsoft repeatedly messed the whole thing up.
I don't think that's their biggest mistake. Their downfall was because they where mainly a hardware company without any network effects. Customers could easily switch from Nokia to any other hardware without an issue.
No, their biggest mistake was having no clue what they were doing or, why.
Nokia were a tech slop factory - one new model roughly every two weeks, with no obvious strategy or rationale, many only superficially different.
Every so often they'd produce a classic that was ahead of its time, like the Communicator series, then by the time the surrounding infra had caught up they'd moved on and allowed a competitor to eat that space.
iPhone and Android were both killing them, and they had no idea how to respond.
Elop was the undertaker, and much hated for reasonable reasons. But the brand was already a zombie by that point.
I've written lots of comments, but Windows Phone 7.5 and 8 worked pretty well on low end hardware; much better than Android on similar hardware. If Windows Mobile 10 had continued that trend and delivered on the promise of all WP8 phones being upgradable to WM10, things would be different now.
Microsoft also made some big mistakes IMHO; having a terrible browser and a terrible app marketplace doesn't work: mobile IE was garbage, mobile Edge had a better renderer but worse UX, and they prohibited other browsers at least initialy (Firefox wanted to make an internal port, but were told no thanks). The way they managed APIs for apps led to multiple generations of apps and developers noped out at each stage; WinCE -> WP7 -> WP8 -> WM10 all wanted significant reworking, and WP8.1 wanted a minor reworking. A lot of WinCE apis were available in WP7, but Microsoft wouldn't tell you and wouldn't be happy if you did it. You could run WP7 apps in WP8, but to get new features you had to do the rework and distribute two separate apps. Same for WP8.1, but now you had 3 apps. And again for WM10 ... with the bonus that if you had a WP8 app installed when you upgraded to WM10 there was a 50% chance it wouldn't launch after the upgrade. Apple sometimes did some of this, but major OS upgrades usually applied to all phones, and their users upgrade regularly. Android generally puts backports in the jetpack library so you can build for the newer APIs but still work everywhere.
Of course, Microsoft should have understood the importance of backwards compatibility from their decades of experience on PCs... but they were in full forget about everything mode. :P