There are a number of basic tweaks that reflect real life situations that can quickly make these functions unsolvable by elementary functions. One example are time-varying carrying capacity. If you're on an island that generates a limited amount of resources each year you get the basic carrying capicity logistic function p'(t)=p(t)(1-p(t)) which is solved by p(t) = 1/(1+c e^t). But if that your population has a delayed affect on the available resources you get p'(t)=p(t)(1-p(t-t1)) which can't be expressed as elemantary equations. http://en.wikipedia.org/wiki/Logistic_function#Time-varying_...
Also, preditor-prey models which occur naturally where you have two populations that depend on each other which can't be reduced to elementary functions either:
http://en.wikipedia.org/wiki/Lotka%E2%80%93Volterra_equation