If you send content-type header for image/, you can only send image data for one image of the type actually used instead of . Since you are sending xhtml data, you should use content-type header application/xhtml+xml, although text/html works as well.
So, using the approach you have, what you need to do is use valid markup. Using a validator on your (x)html markup is highly recommended. There is no <image> element. The markup for image element is <img>, but it is not used the way you do it iether. It contains replaced content: i.e. the element is always empty (<img .../> and never <img>...</img>). Empty Elements shows the syntax for empty elements, and also has an example on the usage for the <img> element.
I'd also recommend moving your image data out of the database, and use ordinary file storage. With your current approach, the src attribute of the image element has to be a php-script (or similar) which accesses the database once again (per image), retrieves the image data, sends the appropriate content-type: image/... header and then echoes the image data (and nothing else).
If you used ordinary file storage, you'd only need to access the database once, set the href to the file matching your database image entry, and have the webserver retrieve the correct file automatically. This approach would also allow you to place static content such as images on another web server, to remove load from your main web server(s) and database(s). Additionally, serving static content works great with the open source web server lighty (lighttpd).