Sitecore workflow will only apply to versioned fields, since it works by preventing publishing of unapproved item versions. However what if I have a language-independent field (such as an image, number, or price) which I need to workflow? Are there approaches which allow for approval of changes to such a field, without allowing it to be edited/changed in each language version of the item?
I have not attempted this and have no idea how well this would work in practice. It's just an idea.
One way to handle it might be to just use a versioned field with language fallback and then add a customization that restricted editing to the "master language". You could use an item:saving handler to intercept an edit, use the language fallback settings to determine which language the value is coming from and then, create a new numbered version in that language and update the value there.
Let's start off by imagining how such a feature would work if it existed. Let's say you edited a shared field—would you like all language versions of the item to go to the "Awaiting Approval" state? This doesn't seem practical, which is why, I believe, Sitecore decided that shared fields will not be subjected to workflows.
Another solution would be to have workflow states (and publishing) on field level, which Sitecore does not support. Adding such a feature would be a core change in how Sitecore works.
The only thing you can do is enable workflow for you media items. This is the closest thing to a solution available at the moment.