You need to make sure the HOST isn't already pointing to the correct place:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC]
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule .* http://mydomain.com [R,L]
RewriteCond %{HTTP_HOST} !^en.mydomain.com$ [NC]
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule .* http://en.mydomain.com [R,L]
RewriteCond %{HTTP_HOST} !^fr.mydomain.com$ [NC]
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule .* http://fr.mydomain.com [R,L]