I am not sure if it is possible to detect this, the browser will download the font when it see's the CSS. You could draw the text using a default font, then use something like this to detect if the font has loaded outside your canvas. If it is detected as having loaded, you could then refresh your canvas.
Edit; "What would the proper method of handling this be in the case that a user has disabled custom fonts" - You would have to let the default parent font remain present
OK, So after digging into this further (and playing alot with this), it would appear it is not as simple to handle this as first thought. However, after searching for a solution as if this were my own problem, I have located the following which is what I recommend using to detect if the browser supports font face. If the browser doesn't support font face, just set it to use a standard local font, otherwise the user would have to wait for the font to load, unfortunately any delay you may be experiencing is most likely down to file size and really isn't is something I can help you with, other than by advising you load the font at the start of your page, and assign it at the end of the page.
detect HTML5 and CSS3 features (search for tests['fontface'])
Also take a look at these:
I hope you find this more useful.