Uh. You would like to be able to type M-x query-replace RET \n RET #
RET and have that \n behave like it was typed between quotes in a lisp
expression? That, to me, is very unintuitive behaviour. The \n
syntax is a special escape for the convenience of programmers. It
should not be allowed to pollute interactive commands. The difficulty
here comes from the very fact that entering a string in a program, and
supplying one to an interactive command, are two very different
things, and they need different escape conventions to enter special
characters like the newline. Once you understand that, the difficulty
should indeed evaporate. You might of course disagree with the choice
of escape conventions, but I think it would confuse people more to use
the backslash as an escape character in the interactive setting.