Nobody knows the effective limits for software or hardware.
For software PWM you would have to define the number of steps between off and fully on you need for the dutycycle. Generally I'd expect a practical limit for software PWM of about 10kHz. Software PWM will suffer from jitter so it's probably okay for DC motor speed control, but little use for servos or LEDs unless you can ignore glitches.
The hardware PWM limit is down to how well your Pi was manufactured and the quality of the silicon.
The hardware pads are designed to work up to say 25MHz.
pigpio will let you set frequencies in the range 1 to 125MHz. I don't expect anything above 30MHz will actually work.