Expectation maximization of moving average with binary source input
I think your E-step is correct(only one term missing in the last expression: $-N\ln\sigma_w$ ). 
To obtain the M-step you have to differentiate with respect to all your parameters. You don't have to include $u(n)$  in $\theta$, since it's defined by $p$. So you compute $\frac{\partial Q}{\partial\theta}=0$. Solving for $\theta$, and this is your new $\theta$ i.e. $\theta_{m+1}$. E.g. for $h$ we gets $\frac{\partial Q}{\partial h}=-(-2\sum y_nz_n^s+2h\sum P_n^s)/(2\sigma_w^2)=0$.
Solving: $h=h_{m+1}=\sum y_nz_n^s(\sum P_n^s)^{-1}$.

-For $p$: 
$Q'(p)=\sum z_n^s/p -(N-\sum z_n^s)/(1-p)=0,p=\sum z_n^s/N$.

This is typical Bernoulli/binomial. So it seems right.

-For $\sigma_w$:
$Q'(\sigma_w)=-(\sum y_n^2-2h^T\sum y_nz_n^s+h^Th\sum P_n^s)\cdot (-2/(2\sigma_w^3))-N/\sigma_w=0,
\sigma_w^2=(\sum y_n^2-2h^T\sum y_nz_n^s+h^Th\sum P_n^s)/N$

and updating the parameters in a loop until convergence.