Puedo suponer que el error que te da tiene por ahi algo parecido a "headers already sent"?
En el codigo estas mandando una cabecera [header("Content-Type: $tipo");] para que el navegador sepa interpretar que es una imagen, ahora bien.. no puedes enviar la cabecera si antes ya has realizado alguna salida al navegador (texto, html, espacios en blanco, etc)
Por lo tanto, si pones algo como
Código PHP:
<div><?php
$id = $_GET['id'];
include("dbconnect.inc.php");
$result = mysql_query("SELECT tipo, contenido FROM archivos WHERE id=$id");
$row = mysql_fetch_array($result);
$tipo = $row['tipo'];
header("Content-Type: $tipo");
$photo = $row['contenido'];
echo $photo;
?></div>
Fallara, ya que antes del header se esta enviando la apretura del div [<div>]..
Tienes que mostrar las imagenes de la manera que puso Nefertiter, usando el tag img