There are at least 2 issues to solve with with impersonation. 1) there is the issue of me needing to identify that you are indeed the actual person I want to follow BEFORE I follow you, and 2) there is the issue of my existing followers deciding to impersonate someone else AFTER I follow them.
For the first issue, a combination/variety of solutions are fine. Web of trust (mutual friends), NIP-05 and other 3rd party verifiers (like sharing their npub on another platform where I already follow them, on their websites, etc), and even personally talking to verify if that’s an option.
For the second issue, one solution could be for Nostr clients to treat your Nostr contact list more like your phone contacts. For example, everyone in my phone book has a different phone number, but I may know multiple people named Jack, so I add something in my contacts app that differentiates them from each other—a last name, company affiliation, or even something like “Jack-guitar guy”. There’s no reason for that info to change in MY contact book unless I want it to because it’s only for my reference. If Jack changes his name and broadcasts that to Nostr, then my Nostr client should see that and simply alert me to the change and ask me if I want to update his contact info in my contact list or ignore it.