I asked about this on the mailing list a little while back, and the short answer is that the functionality for proper stand-alone executables doesn't currently exist, but you can get partly the way there by loading all the code that you want and then dumping a system image. In fact, on that earlier thread, Jeff said:
Building system images is a potential approach to obfuscation, and
also speeds up loading a bit. You basically just require() your code
then tell julia to save off its state. I should document how to do
this, but the incantation is at the end of sysimg.jl.