Data loss if of course a no-no to cause. So, just plainly deleting part of the user's resources (I assume they represent data) is never a solution.
Is there some way for you to determine what resources are likely to be least important for your user? Like the recources accessed least or the longest time ago? Perhaps you can come up with a scheme where you lock or disable some of the resources that are most likely to be the least important ones. Then, you allow the users to remove the resources they no longer wish to keep. As slots open up in the normally allowed number of resources, users can choose to unlock a locked resource and move it back to the list of accessible resources.
The time a resource stays around in locked state could be limited. Of course, you'd give your user plenty of warnings and time to act, but ultimately locked resources would be deleted. If relevant, you could also offer a one-time download of the locked resources during the period that the resources are kept available in locked state. I think it is important to let users take their data with them, even if they decide to leave your service. That way, you will leave a more positive feeling with the user, and if you advertise this fact in advance, users may feel more secure about joining the first place.