Ok. Here comes the Inactivate, Mathematica 10's powerful feature.
To replace something insideInactivate could not solve injecting expression into Hold, explicitly your question, use this.
Hold @@ (Inactivate @@ Hold[{1, 2, x}] /. x -> Sequence[3, 4]) (*Hold[1, 2, 3, 4]*) AndBut you mentioned you actually want to use this to inject Do iterator in Compile. This can be done directly by Inactivate without Hold stuff. Use this
Activate[Inactivate[Compile[{}, Do[code, iterators]]] /. iterators -> Sequence[{i, 5}, {j, 5}]] I personally think that with Inactivate and Activate, we can think many things differently now, especially meta programming.