Thanks for pointing out the aesthetic mapping. Attached is the result I was looking for...almost. I would love less white space between "Surface Contour" and "Observation", but that's just splitting hairs. I had originally hoped to build the legend by stacking scale_colour_manual, scale_linetype_manual, and scale_point_manual, but it seems to get complicated quickly (at least for me).
Sorry, my terminology is probably bad. By "description", I had meant a key,value pair in the legend for the point and line geometries, so yes, my original code would have been confusing.
Appreciate the help! New code is below...
-Ben
require(ggplot2)
## tiled data
tile = expand.grid(x=seq(1,100),y=seq(1,100))
tile$z = tile$x*tile$y
tile$brk = "Surface Contour"
## random "observations" (the points)
obs = tile[sample(seq(1,nrow(tile)),25),c("x","y")]
obs$brk = "Observation"
## construct the plot -----------------------------------------------------------
g = ggplot()
## tile layer
g = g + geom_tile(data=tile,aes(x=x,y=y,fill=z))
## add contours
g = g + stat_contour(data=tile,aes(x=x,y=y,z=z,linetype=brk))
## point layer
g = g + geom_point(data=obs,aes(x=x,y=y,shape=brk))
g$options$labels$fill = "Surface Value"
g$options$labels$linetype = ""
g$options$labels$shape = ""
print(g)