I've refurbished a number of N64 joystick's, and while the only way to get it feeling like new again is to lash out and grab a new joystick assembly, you can at least regain the full range of movement without replacement.
Opening the controller you will find that the joystick assembly is mounted in its own casing. Remove this from the controller frame.
Note: Remember to pay attention to how the joystick unit is assembled, so you can reassemble it without any trouble.
Open the joystick assembly. There is a large spring that keeps the tension on the plastic joystick itself, so be careful not to let that fly off.
Inside you'll find two black guides and the grey joystick mounted above a white plastic hemisphere. Originally I thought the problem was the hemisphere being ground away by the tip of the joystick, and while this does contribute to the lack of smoothness, it's not this which causes the real problem - the loss of movement range. This is caused by the joystick wearing out the slots on the two black guides.
Take some fine cotton string, and tightly wind it around the end of the joystick that contacts the black runners. Keep testing it in one of the guides to get the right amount, too tight and it will restrict movement in the outer ranges, too little and fidelity issues in the center will remain. Once you've tightly tied off the cotton (tightly as possible), reassemble the joystick, and test one last time before screwing the assembly back together.
I also like to spray a little machining oil into the white plastic hemisphere (be careful not to get any on the optical sensors) to ease the movement a little.
So there you have it, I'm sure there's probably a better way, but that's the solution I came up with on short notice one night and have successfully used since.