device->StretchRect(pSourceTextureSurface, NULL, pBackBufferSurface, NULL, D3DTEXF_LINEAR);
You can render to a texture with double the resolution then get the texture surface and pass it as pSourceTextureSurface. Remember to release() the surfaces to decrease the reference count.
Edit: Perhpas just using a plain surface with device->CreateOffscreenPlainSurface(). D3DPOOL_DEFAULT is the appropriate pool for use with the IDirect3DDevice9::StretchRect. This surface must then be released when resetting the device.