To get the background, you can use geom_raster to get the desired effect. I will use the same dataset as suggested by @GeekOnAcid:
First get the data and set the regression model:
crime = read.csv("http://datasets.flowingdata.com/crimeRatesByState2005.tsv", header=TRUE, sep="\t") ##Fit the regression model m = lm(crime$burglary ~ crime$murder)
Then we create a grid for the background color:
#
Now we need a distance for the gradient color. I just used the square of the distance from the regression line:
z$grad = (z[,2] - (398.3 + 62.2*z[,1]))^2
Then the plot:
require(ggplot2) ggplot(z) + geom_raster(aes(Var1, Var2, fill=grad)) + geom_point(data=crime[1:15,], aes(murder, burglary, size=population),pch=1 ) + geom_text(data=crime[1:15,], aes(murder, burglary, label=state), hjust=-0.2, size=4) + scale_size_continuous(range=c(1,10)) + scale_fill_continuous(high="red", low="white", trans="sqrt") + xlab("Murder") + ylab("Burglary") + guides(size=FALSE, fill=FALSE) + scale_y_continuous(expand=c(0, 0)) + scale_x_continuous(expand=c(0, 0))
To obtain:

source share