Brief
Regex is not the best tool to use for what you're trying to do, however, that doesn't mean it's impossible.
Code
See regex in use here
s*\{(?:"(?:(?<!\\)\\(?:\\{2})*"|[^"])*"|[^{}]|(?<counter>\{)|(?<-counter>\}))+(?(counter)(?!))\}
Note: I simply prepended "(?:(?<!\\)\\(?:\\{2})*"|[^"])*"|
to your pattern, so I'll only explain that portion.
A shorter method (thanks to PhiLho's answer on regex for a quoted string with escaping quotes) is as follows.
See regex in use here
s*\{(?:"(?:[^"\\]|\\.)*"|[^{}]|(?<counter>\{)|(?<-counter>\}))+(?(counter)(?!))\}
Explanation
I used the same idea as the regex I recently answered another question with and applied it to yours. It allows for escaped double quotes as well as your open/closing curly braces.
"
Match this literally
(?:(?<!\\)\\(?:\\{2})*"|[^"])*
Match either of the following any number of times
(?<!\\)\\(?:\\{2})*"
Match the following
(?<!\\)
Negative lookbehind ensuring what precedes is not a literal backslash \
\\
Match a literal backslash
(?:\\{2})*
Match two literal backslashes any number of times (2,4,6,8, etc.)
"
Match this literally
[^"]
Match any character except "
literally
"
Match this literally
Note: (?<!\\)\\(?:\\{2})*"
ensures it properly matches escaped double quotes "
. This basically says: Match any odd number of backslashes preceding a double quote character "
such that \"
, \\\"
, \\\\\"
, etc. are valid, and \\"
, \\\\"
, \\\\\\"
are invalid escaped double quotes "
(and thus a string termination)