You should take a look at OO design patterns in general MVC is one of the main ones related to creating tiers/layers within your application. You'll find these problems/decisons are repeated in every project. If you are working in a team there can be big benefits in code standards by using a framework.
Tilly's advice is good, the priciple is to constantly ask yourself if you have chosen the correct objects(things).
Lookup 'software cohesion' also, the more you have discrete objects that can't be broken down into smaller entities the higher the cohesion of your design.
So if you look at User class source file and see code that is not directly related to an operation on a user then refactor it