I have never attempted this myself, but in theory it should look something like that (suppose you want to do averaging in 2x2 window):
* first do pooling with method = AVE, kernel = 2, stride = 2
* then do deconvolution: kernel = 2, stride = 2, weight_filler: type = "constant", value = 1 and bias_term = false
Optionally you may have to crop the deconv output to match the blob you began with, if it's important to you.