La strada che stai seguendo è decisamente errata o per lo meno parzialmente.
La prima idea che hai buttato lì è quella giusta, utilizzare una piccola immagine che può essere tipo da 1 pixel di larghezza per 100 di altezza o 200, che contiene il gradiente, poi la applichi così al body:
<body style="background-image:url('/img/immagine.gif')">
In questo modo l'immagine si ripete sia in orizzontale che in verticale allora tu puoi aggiungere altri due attributi css in questo modo:
<body style="background-image:url('/img/immagine.gif');background-repeat:repeat-x">
per farla ripetere solo in orizzontale.
Oppure:
<body style="background-image:url('/img/immagine.gif');background-repeat:repeat-y">
per farla ripetere solo in verticale.
In questo modo non hai + quell'effetto di cui parli e va bene per tutte le risoluzioni.
Naturalmente, se fai un gradiente dall'alto (Rosso) al basso (bianco), anche il colore di background del body dovrà essere bianco.
ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/