should RasterCount be a parameter within mem_drv.Create? - if that is removed, the fetch the band and write the new array? something like:
dest = mem_drv.Create('', x_size, y_size, 1, gdal.GDT_Float32)
band = dest.GetRaseterBand(1)
res = gdal.ReprojectImage( DEM, dest, \
DEM.GetProjection(), DEM.GetProjection(), \
gdal.GRA_Bilinear )
band.WriteArray(res)
if res is the newly interpolated array?