Con ese código no debería salir una debajo de otra, sólo en el caso de que no entren las dos imágenes en el ancho de la página.
De todas formas, para lo que necesitas te recomiendo el uso de tablas, algo así (OJO! es sólo un ejemplo sin comprobar si funciona, para que se vea la lógica):
Código PHP:
$con = mysql_query("SELECT * FROM imagenes WHERE username = '$sesion'") or die("Error: ".mysql_error());
if(mysql_num_rows($con) != 0) {
echo "<table><tr>";
$contador = 0;
while($datos = mysql_fetch_array($con)) {
if ($contador == 3) {
echo "</tr><tr>"
$contador = 0;
}
$contador++;
echo "<td><img src=".$datos[imagen]."</img></td>";
}
echo "</tr></table>";
} else {
echo "No hay imgenes para mostrar";
}