Sometimes it's just not possible to tear down an entire bathroom and rebuild. It could be due to constraints in time or budget, or you just don't want to go through the hassle of living in a dusty house for weeks (if you are staying put).
Yes, you can consider the option of installing new tiles over existing ones. Granted, it's not the best of solutions. But when you are faced with limitations, this is a viable way to build that dream bathroom you've always wanted.
Preparation of the surface for retiling is extremely important. Get a professional to inspect the existing tiled floor and ensure there are no loose tiles hanging around. Pay a visit to your neighbor's place downstairs and check that there is no ongoing leakage from your bathroom floor to their ceiling (you or your neighbor never know). Once you are sure your bathroom's water-proofing is still intact, the surface will need be roughened by the tiler and applied with a floor leveler - a cement-like paste to fill those grout lines in preparation for receiving the new tiles.
Likewise, for walls, it's also possible to lay tiles over tiles. Any existing fittings like the toilet bowl and shower set should be taken out and replaced subsequently. Freeing the walls of objects also guarantees a nice finish.
I know you might be concerned that tiles installed vertically have a higher chance of failing. But the fact is as long as the surfaces are properly prepared and the correct adhesive material used, there is practically zero chance you will have wall tiles dropping over your head while you bathe!