You say you "want x to always be a symbol", but all symbols will be replaced with their assigned values (OwnValues) if they exist, so this can't actually be done, per se. What you can do, however, is apply one of the various Hold* functions. Probably HoldForm is what you want in this case, and you don't need the Block for this:
TraditionalForm@
TextCell[Column[{Row[{HoldForm[x], " = ", 5}]}, Spacings -> 0.5],
"Text", FontFamily -> "Palatino", FontSize -> 18]
This might have undesirable implications if you do further processing of the result, but I would need more information to help you address any of those issues.
Extra info about Block
Inside the Block, x will have its OwnValues temporarily overridden. But once the Block finishes executing the OwnValues for x will revert to its previous value. Execution continues until nothing in the expression changes, so any x remaining after Block finishes will get replaced by the "original" OwnValues definition.
Let's play with this:
x = 7;
Block[{x = 5},
{OwnValues[x], Hold[OwnValues[x]]}]
This returns
{{HoldPattern[x] :> 5}, Hold[OwnValues[x]]}
Now try:
ReleaseHold@%
This returns
{{7 :> 5}, {HoldPattern[x] :> 7}}