In the highly customized SharePoint solution, you might end up with a large number of WSP packages (10-15 for example) that are deployed as separate packages. There is nothing wrong with such approach for a production deployment, but deploying number of WSP again and again for debuging/testing in a development environment might be cumbersome (regardless if they are visible or hidden features).
Such behavior is specific for WSP deployment, when SharePoint recycles application pools during deployment. In such situation, deployment of 10-15 packages is a time consuming process. This behavior can be improved by adding "ResetWebServer="FALSE" to the solution manifest, preventing IIS pool recycling. However, it won't work for upgrade scenarios (http://msdn.microsoft.com/en-us/library/aa544500.aspx).
To improve the deployment time of multiple WSP packages you could use "container" approach, packaging all WSPs in one single package to deploy it once, decreasing deployment time significantly.
For example, create a solution with 5 projects - three webpart projects, one list definition and one workflow project. Then, create empty SharePoint project (named "MyProduct") that will serve as "container". Navigated to Package.package, and add there the solution items we created before :