Multipass is slower than single pass since it makes 2 or more passes on the actual geometry, that means you are making twice as many glVertex3f calls and so on. You can speed it up by putting the polygons into display lists or CVA’s. It is not 2 times slower since there are other factors that remain unchanged. The geometry calculationg WILL be 2 times slower but the end fps will not be hit as badly as that.
You need to use some sort of blending for the second pass too, otherwise you’d simply overwrite the first pass. To reduce the fill rate overhead, use glDepthFunc(GL_EQUAL); for the second and subsequent passes.