I’m using the nTwitter npm library (https://github.com/AvianFlu/ntwitter) which is handling the OAuth and the post request for me.
Other than the oauth parameters, the only parameter I am sending is banner, with base64 encoded image data. The image itself is just over 2MB in size with dimensions 1252x626. I’m not sending the width/height at the moment, but I could.
The image is produced from a canvas in the browser, exported as a base64 encoded image and proxied through a node server using nTwitter on to the Twitter API.
On the other hand, I have also tried uploading one of the generated images to my account through the web interface and that returns an Internal server error too (http://cl.ly/LUxK).
Does this help?