The text/plain hack you implemented is definitely wrong, and will cause problems if the writemime function is used in any other context.
e.g. for HTML, you could do something like the following (untested, may have typos):
function Base.writemime(io::IO, ::MIME"text/html", x::AbstractVector{Png})
print(io, "<p>", length(x), "-element ", typeof(x), "<ul>)
png = MIME("image/png")
for i in x
print(io, "<li><img src=\"data:image/png;base64,", base64(writemime, png, i), "\" /></li>")
end
print(io, "</ul>")
end