The fundamental problem is that cryptographers are working on this, but it's
hard. Security is always about tradeoffs, and when actual lives are on the line people need to understand what tradeoffs they're making.
For instance, a messaging protocol that authenticates its participants can be strongly privacy-preserving for the initiator or recipient, but as far as we know, not both. One side can initiate the connection anonymously, but at some point one or the other must identify themselves before the other.
Another issue is that crypto is not, and may never be, at the point where anyone can securely assemble a protocol from raw primitives (e.g., AES or SHA-2) without specialized knowledge. These primitives provide security features that are well-defined mathematically, but that definition may not map well to intuitive real-world security properties. As an example, a one-time pad done correctly is information-theoretically secure. But it's trivial to tamper with, because there's no authentication of the message. AES-CBC has the property of indistinguishability under chosen-plaintext (IND-CPA) and chosen-ciphertext (IND-CCA1) attacks, both of which are considered necessary properties for a block cipher to be secure. For a long time, we though this was good enough. Unfortunately, IND-CCA1 didn't model adaptive chosen-ciphertext attacks, where an attacker uses the outcome of previous decryption attempts on chosen ciphertexts to influence his next choice of ciphertext to submit for decryption. Authenticated modes provide indistinguishability under adaptive chosen-ciphertext attacks (IND-CCA2), but unauthenticated modes like CBC remain popular (they do still have their use, but you need to understand what the risks and tradeoffs are before using an unauthenticated mode like CBC).
We likewise don't know of a good, user-friendly way to authenticate identities without the use of a central authority (à la certificate authorities) or a web of trust (à la GPG). Both suck. With CA-style authentication, if a CA is compromised, you lose many of the security guarantees. This is perhaps good enough for e-commerce, where governments typically have little incentive to steal credit card numbers, but it's potentially catastrophic for communication between political dissidents. A web of trust is perhaps better for this kind of use-case, but nobody knows how to make the process of bootstrapping the web of trust simple, the decision of who to trust is inherently complicated (Alice trusts Bob and Carol, who both sort of know Dave who vouches for Eve implicitly; how should Alice feel about Eve?). You can hide that complication at the cost of decreasing the utility (trust conservatively) or increasing the risk (trust liberally). Or you can expose that complexity and let individuals weigh the risks themselves.
The more of these decisions and choices you hide from the user, the more user-friendly you can make your system. But the cost is control over exactly whom and how you trust. Unfortunately, if you build one easy-to-use system for people to securely share cat photos and one hard-to-use system for political dissidents, it's easy to identify the political dissidents.
Anyone who solves this problem deserves a fucking Nobel.