Hi Alexander,
You could quote the whole do-block:
> $(strictify [| do y .= x; ... |])
And then strictify :: ExpQ -> ExpQ manipulates the AST a bit: x .= y does parse as an expression, so you can change a NoBindS containing that .= function into a BindS or LetS. Unfortunately the quotes built into TH complain about undefined variables, so you'll probably have to use a quasiquote instead (haskell-src-meta can help here).
Also, you may want to desugar to "let !x = y `deepseq` y", or involve (return $!) since "let x = y `deepseq` y where y = undefined :: Int" only crashes when you seq the x.
Adam