They could be more successful if they were easier to use, easier to obtain.
That's, IMHO, one of the weakest point of Bitcoin. It's really hard to use.
People usually want to send money to someone/some organization and:
- Trust it's the good person
- Be identified as the sender
- Add a message (like "Happy Birthday from your grandma")
Bitcoin does not provide that and, IMHO, it will be a critical step to make bitcoin acceptance easier.
Could we do it on top of bitcoin. Yes, I believe. But it means designing a *protocol* on top of bitcoin. The transport could be XMPP or HTTP, I've wrote some ideas about it there:
http://ploum.net/post/building-your-web-identity