You factorized properly. Take a delta such that |f(x)-f(a)| < 1 as x -> a. Then you can get a bound on |f(x)|, say M. Then you choose another delta so that |f(x)-f(a)| < epsilon/(2|g(a)|+1). Then choose another delta such that |g(x)-g(a)| < epsilon/(2M). Then take the smaller of all three deltas, and you get your result.

To make the proof complete, you should explain that the +1 in epsilon/(2|g(a)|+1) is used because |g(a)| might be zero.

Also, you said "since f is continous, |f(x)| has an upper bound". Continuity alone is not enough, |f(x)| has an upper bound on what set? It certainly does not necessarily have an upper bound on R.
You can remove any doubt by getting an explicit expression for M in terms of f(a) by using the fact that |f(x)-f(a)| < 1 (which is easy). You see, |f(x)| is bounded not only because f is continuous but also because (a - delta1, a + delta1) is a subset of [a - delta1, a + delta1] and [a - delta1, a + delta1] is compact, but I don't think you should talk about this for this proof. Getting an explicit expression for M will remove any questions.