a) When your website exceeds the architectural and resource limits of your shared or reseller hosting.
b) When you need to install custom modules or applications that aren't supported by your shared host.
c) When you require root access to the server.