Kudos for jfriend's answer. Callbacks are sexy.
Second crack at it.
function loadJQ(callback) {
if(!window.jQuery) {
// Create jQuery script element.
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'path/to/jquery.js';
document.body.appendChild(script);
script.onload = function(){ callback(jQuery); };
// IE 6 & 7 ala jfriend00
script.onreadystatechange = function() {
if (this.readyState == 'complete') callback(jQuery);
}
} else {
callback(jQuery);
}
}
Invocation
loadJQ(function($){
alert($ === jQuery); // true. jquery is loaded.
});