Ich weiß die Frage ist schon etwas älter aber nicht minder aktuell. Ich stand selbst gerade auf den Schlauch und konnte folgendes herausfinden:
Sobald man query_posts ausführt werden einige conditinal tags innerhalb des Loops zurückgesetzt (siehe auch hier: http://codex.wordpress.org/Class_Referenc…uery#Properties. Ich nehme an, dass Wordpress automatisch annimmt, es handle sich um die Home-Seite sobald man den Loop ausführen will und dazu query_posts benutzt.
In deinem Fall müsstest du also vorher is_home in eine Variable schreiben und dann an die query übergeben um das richtige Ergebnis zu erhalten:
$var_is_home = is_home();
query_posts('category_name=News');
global $wp_query;
$wp_query->is_home = $var_is_home;
Vorsicht: Du musst is_home erst nach der query_posts ausführen da die Funktion die aktuelle globale Variable $wp_query löscht und neu anlegt.
Nach dem Loop muss dann von Haus aus immer folgendes gesetzt werden da ansonsten alle anderen Conditinal Tags auch nicht mehr richtig funktionieren: