If I decide I want to have my personal website be called google.com I can edit my hosts file to point google.com to my webserver and everything works for me, but anybody else going to google.com is going to get Google's page instead unless I somehow convince them to edit their files or use my weird DNS server.
Even if I come up with some great reason that makes people want to accept that google.com is better when it goes to my website instead, what happens when someone else decides they should be able to use google.com for something else and they convince a bunch of people to use their weird DNS server? We could fragment the DNS all over the place and have several conflicting entries for every popular domain name depending on what DNS server you're using but is that really better?
OpenNIC has a lot of non-ICANN domains but runs in a fashion similar to ICANN (central organization deciding rules for TLDs). Iirc there are some small non-US communities that use this a lot.
There are also a decent amounts of crypto TLDs (.bit for namecoin, Ethereum has a couple, etc).
There are of course a lot of corporations that use custom DNS domains for internal purposes, like .corp or .internal or the like.
It is difficult to get people to change their DNS serves en masse to something non-standard. The lack of being able to get real TLS certificates is also an issue though there is work in this direction: OpenNIC is developing a traditional CA afaik and namecoin has some experimental stuff to support DNSSEC and TLSA to have TLS certs enforced by the blockchain.
So why does no-one do this/ Obviously people do do it for ad-blocking, so why not for other purposes? Too difficult to get traction, perhaps?