I would try copying all of jQuery into your JS file and running it in "no conflict" mode. Then, if you wrap your entire JS file in an immediately invoked function expression that takes no arguments, your $ variable won't interfere with the global scope.
So, your file would look something like:
(function () {
// all of jQuery goes here
$.noConflict();
var $ = jQuery.noConflict();
// your code that uses $ here
})();
Wrapping everything in the IIFE will keep your $ variable local and therefore it will not be touchable by any code outside the file. That may be a little bit extreme, but it should work.
Edit: my above solution is incorrect now that I've tried it out myself.
What you actually want to do is just ensure your version of jQuery is included before your user's. Then in your code, run var myJQ = jQuery.noConflict(); and use myJQ in place of $ or jQuery in your code. See this example.