Self-signed certificate are worthless to typical end users unless you have some sort of third party that can vouch for it.
This isn't the only inaccurate thing in your post but it's the most egregiously inaccurate, I think.
SSL has 2 different protections: encryption and identity verification.
Encryption is certainly not worthless to typical end users, and self-signed certificates are an effective means of traffic encryption.
Identity verification is a separate issue from encryption. To say that self-signed certificates have no value because they don't provide identity verification is to ignore half the purpose of SSL in the first place. Actually, more than half, because I'd say that encryption is far more important than identity verification.
Yes, a lack of proper identity verification (like with self-signed certificates), can make you vulnerable to certain targeted attacks like MITM.
But unencrypted connections make you vulnerable to anyone who happens to be listening between you and the destination, the attacks don't have to be targeted at all.
A self-signed certificate is like me getting a bill in the mail "allegedly" from AT&T. How do I know that address to send payment to is really AT&T's address? How do I know this bill is from AT&T at all? There's no 3rd party that I trust saying this is definitely from AT&T. Anybody could have sent me a bill with AT&T's logo on it and their own address to receive my check.
However, an unencrypted connection with no SSL at all is more like me sending cash in the mail to pay that bill. Yes, chances are, it will arrive at its destination unimpeded. Yes, chances are, nobody's gonna hold that envelope up to a lightbulb and see that there's cash in it. But the possibility is there, everyone between me and AT&T who handles that envelope could potentially see that there's cash in it and decide to take it for themselves.
Which do you think is a bigger risk? Someone sending me a fake AT&T bill with their own address on it to send a check to? Or sending cash in the mail? Or if not cash, sensitive/private info like your username/pw or SSN or mother's maiden name or ATM PIN or whatever, written on the outside of the envelope for anyone to read who happens to hold the envelope in their hot little hands.
Yes, it's just an analogy, and all analogies are flawed to different degrees, this one is no exception the analogy isn't perfect. But you get the idea. I think it's far riskier to send sensitive information over the wire unencrypted than it is to allow self-signed certificates to pass without a big scary poison label on them.
I think perhaps the real problem is the dual purpose of SSL, trying to do 2 things with 1 solution. There should be a way to provide encrypted connections without needing identity verification, and vice versa.
Oh wait, there IS a way to provide encryption without identity verification, it's called a self-signed certificate.... except that browsers have killed that possibility by making them sound more dangerous than unencrypted connections, which they categorically ARE NOT. Every flaw with a self-signed certificate also exists with an unencrypted connection, including MITM attacks. The vulnerabilities of self-signed certificates are a subset of the vulnerabilities of an unencrypted connection.