You might find something like this interesting:
show-trailing-space() {
zle .$WIDGET &&
if [[ $BUFFER = *(' '|$' \n'*)
|| $PREBUFFER = *$' \n'* ]]
then POSTDISPLAY=$'\u21a9'
else unset POSTDISPLAY
fi
}
zle -N magic-space show-trailing-space
zle -N self-insert show-trailing-space
zle -N kill-whole-line show-trailing-space
zle -N kill-line show-trailing-space
zle -N kill-word show-trailing-space
zle -N backward-kill-word show-trailing-space
zle -N backward-delete-char show-trailing-space
Integrating this with other plugins etc. that may have rebound those
widgets or appropriated POSTDISPLAY is left as an exercise. Other
improvements (bind to history motions etc.) are possible.