You could define your own elisp function which modified the regexp and then passed it back to emacs. In pseudo-elisp:
(defun my-query-replace-regexp (regexp)
; modify regexp to replace ( with \(, { with \{, etc.
(query-replace-regexp modified-regexp)
)
; rebind C-% to use new regexp function
(global-set-key "\C-%" 'my-query-replace-regexp)