The logic of preferring PBKDF2 over iterative SHA2
I think you are overstating the complexity of PBKDF2, and also, not matching it feature-wise with your alternative.  Let's dispatch the latter first: as gammatester's comment mentioned, PBKDF2 supports variable output size.  If you built that into your proposal, it would become more complex.

Once we control for that, PBKDF2 is hardly more complex than your iterated SHA-2.  The heart of PBKDF2 is the iterated application of a pseudorandom function (PRF), with the password as its secret key:

$$
F(\mathrm{Password}, \mathrm{Salt}, c, i) = U_1 \oplus U_2 \oplus \dots \oplus U_c 
$$

...where:

$$
\begin{align}
U_1 &amp;= PRF(\mathrm{Password}, \mathrm{Salt}\, \|\, \mathrm{INT\_32\_BE}(i)) \\
U_2 &amp;= PRF(\mathrm{Password}, U_1) \\
&amp; \vdots \\
U_c &amp;= PRF(\mathrm{Password}, U_{c-1})
\end{align}
$$

The way that the sequence of values $U_1, \dots, U_c$ is computed is very similar to the way you're proposing to iterate SHA-256, except with the addition that each iteration uses the password as its secret key.  While this isn't necessarily a groundbreaking improvement, it does mean that an attacker who sees an intermediate $U_i$ is not able to pick up from there and compute the rest of the sequence unless they guess the password.  Whereas with your construction, any intermediate value of iteration is sufficient to compute all succeeding ones.

The second difference is that the final value of $F$ is not just $U_c$, but rather the XOR of all the values in the sequence.  This Q&amp;A goes into the motivation of that, and the answers offer several alternative takes.

The third difference is the choice of a PRF as the primitive instead of a hash function like you propose.  This is just conceptually sensible given that we're talking about a scenario where there is a password that plays the role of a secret key; all that PBKDF2 says is that you should iterate a secret-keyed function, using the password as the secret key, and allows for any such choice of function.  The common choice of PRF is HMAC-SHA1, which does make PBKDF2 look a bit complicated if you're missing the observation that it treats its PRF as a black box—it's not concerned at all with HMAC's internal structure.