Can 1.5 gigabytes encoded in the human genome really account for the complexity of a human being?
This is a VERY hard question to answer; I think mostly because it is very hard to think about how the DNA actually encodes information.

The first important thing to note (and also the only direct answer I can give to your question), is that


(Yes) the human genome does encode all information to make a human being, but only in the context of a cell/organism that can read this genome.  


Transferring this to the computer code analogy this means that if the genome is the source code for a program (or rather a couple of them), then the operating system (and also the actual hardware) that executes this code is the cell itself and the two parts have to match up in order to work together.

This is essentially a hen/egg problem: without the cellular machinery to read and operate on the genome the organism doesn't work, but at the same time the genome is the source of the everything that reads it.
If one would put the human genome into another (not closely related) species (or the egg cell of one), this would not form a human being, because the organism/egg cell can't read the instructions properly. (This is also the reason why hybrid animals like i.e. mules are often sterile - the genomes of their parental species are similar enough to be readable and make a working animal, but there are already enough differences to introduce problems).

This brings me to what i think is the actual core of what you're asking:


How can so much complexity be encoded in so little space/bits/... ?


and I don't have a clear answer for that (and neither have I ever seen one). There are, however, a few things one needs to consider

Emergent behavior is when seemingly very simple and limited rules lead to very complex structures. This happens all the time in nature and our body plans are no exception, it is however very hard to see or understand and even harder to consciously design from scratch. Nowadays, machine learning algorithm can get complex results from initial simple instructions, but only because they run 'a couple' of optimization steps inbewteen - evolution has done the same thing for millennia.

A second thing to keep in mind, is that code can be re-used. Programmers already do that (a lot), but usually they try to keep the code readable and make a clean copy for a new purpose. Nature / the genome most of the time doesn't do that and its been re-using and re-purposing pathways on any level for millennia. The reason that arms and legs are built very similar, or that essentially all animals are symmetric is that it's just easier to (re)use the same set of instructions a couple of times with slight alterations than specifically writing everything down.

Finally (as almost always), Randal Monroe explained pretty well, why just knowing the 'source code' of the genome doesn't mean we actually understand how it's doing what it's doing:



This answer's gotten pretty long now and I'm out of time to add sources - if anyone feels motivated to add something feel free to make/propose edits.