Minor problem with the Google+ avatar code: You're making a request to the Google+ API to get the picture information, which is fine. But you're using your own key to do it instead of having a site use it's own key.

This is an issue because normally these requests are limited to 10,000 API calls per day for the free versions of them. If a bunch of people use this plugin, you could rapidly run out of requests.

Additionally, you're using direct curl calls and not the wp_remote calls to make these requests, which means that this won't work on sites without curl available to them.

Additionally, you're making this same API hit on every request to display said avatar, with no caching around it. This will exceed the limits fairly rapidly, the returned data should be cached for at least a day or two before making the same request again. You could use a transient for this, or usermeta would be appropriate in this instance.

Just a few points. It's relatively easy to make code in WordPress interact with external services APIs, it's a lot trickier to make them scale as well.