Thanks for the question, Adrian.
You’re correct that the Web Intents / Tweet Button do not allow an image to be attached.
Cards - we’ve recently evolved the Cards experience such that you will see images / expanded Cards inline in the timeline if you see the Tweets in the official iOS and Android apps. Right now, they are hidden behind the view summary link on the web, but that experience is open to change in the future. Cards are not available to third party clients at this time.
Probably the “best” way to do this from a user perspective today would be to have a web app where a user authenticates to you, and you can then ask them to compose a Tweet and upload and attach the image in the background. Yes, it would require you to have them authenticate for read/write access to their account (because write permissions are required for you to post a Tweet on their behalf), so I’m inclined to agree that this is not ideal.