Why even if all requirements for natural selection are met, it may not happen?
Evolution, a change in the trait distribution of a population, occurs by four mechanisms; drift, mutation, migration, and selection. E.g. These mechanisms cause a change in the mean of trait, or variance in a trait etc.. Just to summarise the conditions you gave:

a) Trait $i$ has variation

b) Trait $i$ covaries with fitness ($\omega$)

c) Trait $i$ is heritable from parent to offspring

Genetic drift is the random loss of genetic variance from the population by stochastic processes. Mutation (generally) generates new genetic variation within populations. Migration can lead to loss (emigration) or gain (immigration) of genetic variation from a population, as variants come or go from a population.

Selection is mechanism underlying adaptation. This is what is in condition b of the conditions you gave. We can predict the response to selection using some simple quantitative genetics in the form of the (multivariate) breeders equation.

$\Delta z = G\beta$

Where $\Delta z$ is the response in the trait, $G$ is the genetic (co)variance matrix, and $\beta$ is the selection. 

In a simple toy example we could look at a single trait, $i$. We allow $i$ to satisfy all of the above conditions. This means that both $G$ and $\beta$ are non-zero, and therefore, $\Delta z_i$ will also be non-zero. Just putting some random numbers in to the equation to make it clear, if $G = 0.5$ and $\beta = 0.8$ then;

$\Delta z_i = 0.5 \times 0.8 = 0.4$

Mutation, drift, and migration could all oppose or distort the effect of selection. In other words, they can cause the actual and predicted response to be different from one another (i.e. $\Delta z_i \neq 0.4$), and there will not necessarily be a change in the phenotypic distribution.

However, selection is also factor that could cause a difference between the predicted and actual response to selection in trait $i$. This is because genetic correlations can arise among traits, either by linkage (close proximity in the DNA) or pleiotropy (when one gene affects more than one trait). For example, we may see no response at all in $i$ ($\Delta z_i = 0$) when both $G_i$ and $\beta_i$ are non-zero, if selection on a second unmeasured trait, $j$, opposes selection on $i$ ($\beta_i = -\beta_j$), and trait $j$ has equal variance ($G_i = G_j$) and is perfectly covarying with $i$, $cov_{i,j} 1$. Approximately this would be;

$\Delta z_i = (G_i \times \beta_i) +  (G_{i,j} \times \beta_j$)

$\Delta z_i = (0.5 \times 0.8) + (0.5 \times -0.8) = 0$

This is a major issue in the study of evolutionary biology. Genetic correlations can cause severe disparity between the actual and predicted response to selection and univariate methods are insufficient as a result. More studies adopt multivariate methods these days, though these are generally limited to just a handful of traits so its still not perfect. In reality methodological and logistical constraints present a huge obstacle to being able to predict $\Delta z_i$.