It seems like you should be able to get prettify-symbols-mode to do this, but I could not figure it out.
Here is a font-lock approach with overlays. It is a little tedious since you have to define every replacement and replacement char, but this is nearly what you have to do with prettify-symbols-mode anyway.
(setq replacements '(("\\\"u" . "ü")
("\\\"o" . "ö")))
(defun next-symbol (&optional limit)
(while (re-search-forward (mapconcat
(regexp-quote (car cc))
(let* ((pattern (match-string 0))
(replacement (cdr (assoc pattern replacements)))
(beg (match-beginning 0))
(end (match-end 0))
(ov (make-overlay beg end)))
(overlay-put ov 'symbol-overlay t)
(overlay-put ov 'display replacement))))
'((next-symbol (0 nil t)))
You can clear the overlays with (ov-clear 'symbol-overlay).