@rvk: Thank for the trick, hadn't thought of that.
I've got a better method.
I noticed the Charset for Header class was set to cp1252 on my system.
Forcing it to UTF-8, before the DecodeMessage, will give you the result directly in UTF-8
imap.FetchMess(StrToInt(MessageList[i]), Message);
MimeMess.Lines.Text := Message.Text;
MimeMess.Header.CharsetCode := UTF_8; // was cp1252
MimeMess.DecodeMessage;
Memo1.Lines.Add('---------');
Memo1.Lines.Add('Subject: ' + MimeMess.Header.Subject);
Memo1.Lines.Add('From: ' + MimeMess.Header.From);
Memo1.Lines.Add('Date: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', MimeMess.Header.Date));
In that case extended UTF-8 characters are translated correctly too.
Internally mime encoding is used, but first translating it to cp1252 and then to Utf-8 will loose characters.
Letting it directly translate to utf-8 will fix that.