Checking normality from residual plot On fitting a simple linear regression to some data, we get the following residual plot. 
Can we say from the inspection of this plot that the normality assumption is violated? What mechanism could have resulted in a plot of this form?

The residuals as you've plotted them are certainly not normal because they appear to be bimodal.
One possible explanation is that you have omitted a variable in your regression which has an additive effect on the conditional mean.  Let $z$ be a binary indicator for some class membership.  It appears that the true data generating process may look like
$$ y = \beta_0 + \beta_1 x + \beta_2z $$
But you've only fit a model with $x$ and not $z$.  I can recreate your plot by simulating this scenario quite easily
set.seed(1992)
N = 50
x = rnorm(N)
z = rbinom(N, 1, 0.5)
y = x + 2*z + rnorm(N, 0, 0.1)
model = lm(y~x)


plot(fitted(model), resid(model))



Have you omited a variable in your regression? If not, you may find techniques described in this thread interesting.
