Unfortunately you can't block auto-referers as such-- at least not in Apache alone. They can be detected in an instant using any programming language; my own log wrangling uses javascript and they're flagged automatically as robots. But if you try to make a RewriteRule you slam straight into limitations on what can be on the left vs. what can be on the right.
My personal compromise is to make individual rules for a handful of very large files:
RewriteCond %{HTTP_REFERER} /hovercraft/april_blues\.html$
RewriteRule ^hovercraft/april_blues\.html - [F]
and so on. (Note that you can only do this if your navigation is structured so that no page ever does link to itself! Internal # fragment links don't count, because those are handled by the browser without server involvement.) If you find that only certain files are being hit over and over, this is a reasonable compromise. If there are lots and lots of them, you have to go to more complicated remedies.
One more possibility, though. You said "media files". Does that mean files that don't, themselves, link to anything-- you can link
to them but not
from them? Then you can make an unconditional referer block that looks something like this:
RewriteCond %{HTTP_REFERER} \.xtn
RewriteRule \.xtn$ - [F]
where ".xtn" means whatever extension your media files use. The only purpose of ".xtn" in the body of the rule is to keep the server from having to evaluate conditions on every single request, ever.
If they all live in certain directories, include that part in the body of your RewriteRule so the server doesn't have to read all the way to the end:
RewriteCond %{HTTP_REFERER} \.xtn($|/)
RewriteRule ^mediafiles/blahblah\.xtn - [F]
If these directories contain nothing but non-page files, you don't even need to spell out the full filename.