I'm venturing in unknown territory here... 
I am trying to work out how hard it could be to implement an Email client using Python:

Email retrieval 
Email sending
Email formatting
Email rendering

Also I'm wondering if all protocols are easy/hard to support e.g. SMTP, IMAP, POP3, ...

Hopefully someone could point me in the right direction :)
I think you will find much of the clients important parts prepackaged:
Email retrieval - I think that is covered by many of the Python libraries.
Email sending - This would not be hard and it is most likely covered as well.
Email formatting - I know this is covered because I just used it to parse single and multipart emails for a client.
Email rendering - I would shoot for an HTML renderer of some sort.  There is a Python interface to the renderer from the Mozilla project.  I would guess there are other rendering engines that have python interfaces as well.  I know wxWidgets has some simple HTML facilities and would be a lot lighter weight.  Come to think about it the Mozilla engine may have a bunch of the other functions you would need as well.  You would have to research each of the parts.
There is lot more to it than what is listed above.  Like anything worth while it won't be built in a day.  I would lay out precisely what you want it to do.  Then start putting together a prototype.  Just build a simple framework that does basic things.  Like only have it support the text part of a message with no html.  Then build on that.
I am amazed at the wealth of coding modules available with Python.  I needed to filter html email messages, parse stylesheets, embed styles, and whole host of other things.  I found just about every function I needed in a Python library somewhere.  I was especially happy when I found out that some css sheets are gzipped that there was a module for that!
So if you are serious about then dig in.  You will learn a LOT. :)
How hard is it to build an Email client? - Python