A user who should clearly have permission to edit a node or other content cannot. You've checked the permissions and roles over and over again and everything looks great. The user can log in, make changes to some other content but something's wrong with some specific bit and you can't figure out why.
Hopefully, that's the reason you're here. If not, maybe you'll learn something anyway. Or maybe you should just click another Google link; 'cause that's what I'd do. ;)
Answer: The overall thinking here is that Drupal will not allow a user to edit a node that has any field they're not privileged to edit. So if there's a text box, for instance, that is set to run some PHP code or Full HTML, but their site role isn't allowed to use those "Input Formats", then that user will be denied.
This is how granular it got for me:
My client was set up with the "Editor" role. Prior to launch-time, I built the page with "Full HTML" enabled for that text box. When the Editor went in to make a change to that page, we found that some nodes he could edit and others.... even of the same Content Type... he could not.
The answer was that the Editor role didn't have access to edit "Full HTML" content. "Full HTML" was chosen for some of the body content though. So that caused a problem
Go to /admin/settings/filters and set the permissions for the Input Formats that are required for that particular Content Type or Node. Problem solved.