поставить debug один раз и посмотреть что именно раскрывается и где виснет разве трудно? регулярное выражение у вас в RewriteRule относительно правильное, а вот RewriteCond бессмысленный абсолютно - не надо дублировать RewriteRule, зачем два раза делать?
Я бы сделал типа
RewriteCond $2 !^$
RewriteRule ^/([^/]+)/([^/?]+)$ /$1/?pg=$2&%{QUERY_STRING} [L]
будет выполняться только если $2 непустой.