Pues a simple vista lo unico que veo es que usas incorrectamente el negador de igualdad... o al menos de una forma que no es común...
else if (!$nombre=="" and !$email=="" and !$link=="")
lo "normal" es mas o menos así...
else if ($nombre!="" and $email!="" and $link!="")
Pero de todos modos vamos a colorear tu codigo para ver si algo esta mal en las comillas o cosas similares...
Código PHP:
if ($nombre == "")
{
echo "Por favor ingrese su nombre<br>";
}
else if (!ereg('^[a-z0-9]+([\.]?[a-z0-9_-]+)*@'.'[a-z0-9]+([\.-]+[a-z0-9]+)*\.[a-z]{2,}$',$email))
{
echo "Por favor ingrese su email correctamente<br>";
}
else if ($link == "")
{
echo "Por favor ingrese un link http://www.link.com";
}
else if (!$nombre=="" and !$email=="" and !$link=="")
{
$Query = 'INSERT INTO datos'.
' (nombre,email,link,comentario,viene_de)'.
' VALUES ('.
'"'.$nombre.'","'.$email.'","'.$link.'","'.$comentario.'","'.$vienede.'");';
$IdInsercion = mysql_query($Query, $IdConexion);
}