This is a tricky area, not only because of bandwidth. Retina displays have also made the issue even trickier by providing a much higher resolution screen (meaning that lower res images look even worse on these devices).
There are all sorts of proposed solutions, including programming solutions to serve up different images to different devices—which seems hopeless to me. My favorite solution to this issue is this one:
It focuses on retina displays, but kills two birds with one stone, using one image that is bandwidth light but also high res.