I can't answer your question about any packages that do that. Some of those parameters could be changed. For example, if you alway use \( ... \) instead of $...$, then you could make $ just be a normal punctuation symbol (or you could use \$). Likewise, \&, \_ and \^ could easily be swapped with their nonslashed counterparts. There's no need for ~ to be active, you could easily define \~ to have the same effect. As Will notes in the comments, # can be made a symbol.
I wasn't able to get comments working. I can't figure out how to get a macro to expand to an end of line token. Actually, I'm not even sure that's one of the tokens that gets to TeX's "stomach."
The real problem would come with braces. You really do need two additional characters to act as groupings. You could make two characters you don't frequently use be those.
So barring braces being special and not having line comments (although it'd be easy to define a block comment like \def\%#1\relax{} which might be sufficient for your purposes), this seems to work.
\newenvironment{plaintext}{%
\catcode`\$12
\def\&{&}%
\catcode`\&12
\def\_{_}%
\catcode`\_12
\def\^{^}%
\catcode`\^12
\catcode`\#12
\catcode`\%12
\let\~~%
\catcode`\~12
}{}
Use it like
\begin{plaintext}
Here is some test text % ^ & _ $ # &.
How about some math \(x\_y\^z\). You're still out of luck with braces
though.
\end{plaintext}
\begingroup...\endgroup. Shows why you shouldn't, really. – Charles Stewart Sep 10 '10 at 11:07#, which can be turned into a letter as soon as your macro definitions are all done with. (Well, this might perhaps break some obscure code that uses\scantokens, but you're probably safe.) – Will Robertson Sep 10 '10 at 11:08\begingroupwill work in this way. – Will Robertson Sep 10 '10 at 11:10\bgroup...\egroup? This didn't work for me. I can never remember the rules for when you can use implicit braces, but I don't believe this is one of those times. – TH. Sep 10 '10 at 11:17\def\Curry#1#2#3{#1{#2#3}}to turn streams of tokens into the right shape. Or, better,\def\apply#1\to#2\end{#1{#2}}. – Charles Stewart Sep 10 '10 at 12:32\apply\end\to{plaintext}. I'd probably be easier in that case to just define\plaintextwith a\begingroupand\let\endplaintext\endgroupand then use\plaintext ... \endplaintext. – TH. Sep 10 '10 at 12:55{and}set to catcode other, you could use the macro, say:normal \apply\textbf\to bold\end\ normal- this will groupboldand pass it as argument to\textbf. You can't nest groupings using this macro, but you could define other macros to construct nested groupings. – Charles Stewart Sep 10 '10 at 16:40\normalcatcodesmacro) – Bruno Le Floch Jan 11 '11 at 15:38