No he visto cómo está hecho, pero se me ocurre esto:
La imagen está puesta con background-image, tal y como con cualquier otro elemento.
Luego en el campo INPUT se utilizan los eventos onFocus y onBlur, que corresponden a cuando el campo gana el foco y cuando lo pierde, respectivamente.
Cada evento puede lanzar una función que modifique la propiedad background-image, llamémosles "mostrar" y "ocultar"
Dado "campo" como una variable que representa al la caja de texto, mostrar solo necesita hacer:
campo.style.backgroundImage = "imagen";
mientras que ocultar solo tiene que hacer:
campo.style.backgroundImage = "";
Y con eso lográs el mismo efecto
Saludos.