Also try reading O'Reilly's "Server Load Balancing" book. A great resource. And probably the most effective if not most efficient way.
Another way is to change/extend ezimage by loading each image with a random DNS from a list of DNS's. Consider the list of DNS names: [ images1.mydomain.com, images2.mydomain.com,images3.mydomain.com,images4.mydomain.com ]. Although each DNS points to the same IP, I think the browsers don't ask whether it's the same IP they just send the request and load the content if available. (I would research this).
There are many ways to skin a cat. (Not that I would.)
Haha.. There's literally sooo many different implementations. Anyone up for an exhaustive testing of routes?
Also..I remember using GET is slightly faster (using 1 less packet for transmission) than an actual AJAX call (Check Yahoo's website performance howto) so that route could be better.
For images in stylesheets, you can configure ezjscore to use an alternative hostname.
But this topic is on images linked with ezimage and unfortunatelly there's no out of the box solution. You can override the ezimage template operator if you're using eZ Publish 4.4 or newer.
you can see that you can even define your own rules for the urls that will be rewriten, and define for each rule (or set of rules) which cdn server should be used.
It looks like a pretty handy tool that sounds like exactly what you need.
--
Nothing is impossible. Not if you can imagine it!