The phenomenon you see is what designers like to call the FOUT - "Flash of Unstyled Content". It's a behavior that is browser dependent.
Until recently, it was mostly seen in Firefox, which was immediately displaying text with the fallback font, then replacing it when the webfont has loaded.
Another behavior has been applied by Chrome, Safari and IE, which display a blank space until the font has loaded. To prevent end-user frustration on slow networks, browsers have also implemented a default 3-second timeout: if the font never loads, the fallback gets applied.
Many designers wanted a consistent behavior across all browsers, so the Google Webfonts team together with Typekit have created a javascript solution, that allows to tell the browser how to behave (show the default immediately, or wait until the webfont loads).
That script is called the webfont loader:
https://developers.google.com/webfonts/docs/webfont_loader
It adds CSS classes like .wf-loading, .wf-active, and .wf-active, which allows you to define in your stylesheets what font gets applied when.
Some time after that, Firefox listened to webdesigners and adopted the same behavior as Chrome etc. So this javascript workaround isn't needed, unless you want users to see the FOUT (perhaps for accessibility reasons).
However, if you have a look at the styles applied to your site header, you will notice that that font is applied with the following rules:
.wf-active #header #logo .title .site-title, .wf-active #header #logo .title a {
font-family: "john-doe",Palatino,“Palatino Linotype”,"Book Antiqua",Georgia,Times,“Times New Roman”,serif !important;
}
Notice the .wf-active class - that's the issue here. To get the behavior you're looking for, you should remove that class from your custom CSS:
#header #logo .title .site-title, #header #logo .title a {
font-family: "john-doe",Palatino,“Palatino Linotype”,"Book Antiqua",Georgia,Times,“Times New Roman”,serif !important;
}
I hope this helps :)
Manu