OpenLayers won't be able to reproject an image on the fly.
Update:
Maybe try the following code to check the tranformation is working correctly. If it is still out of place then there is likely to be an issue with your original coordinates:
var bounds = new OpenLayers.Bounds(-127.620375523875420, 21.652538062803, -66.517937876818, 50.406626367301044);
bounds = bounds.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));