For me where service only hasn't started, it has been:
1) Password for service account has expired.
2) The App Server path (as seen in App Server Config / Apps tab) was using UNC path (should've been local drive path)
3) The service account was not a domain account.
4) What @ThereseLogeais said. In my case the service account had less permissions than the one I was logged into the server's desktop with which is why only service would error.
5) Haven't run into this but presumably if you don't have ""Log on as a service"" right under Local Security Policy it would err.