Thanks for the advice, I will look into this idea. The point is to have User and Message objects loosely coupled with each other, they are pretty much independent but can interact each other.
So this is the design pattern I come out with so far for the two systems:
User System: Abstract Factory pattern and Decorator Pattern
Looks quite complicated isnt it? Reality is that I do have a complicated script and database structure, so I dont see it a problem. The system works in a way that each user object(whether member, guest or spider) is created through its corresponding 'creator'. Decorators such as Admin, Banned and Friend can add(or remove as is in the case of 'banned') functionalities to these objects, which also extends from a UserDecorator class.
Anyway this is just a revised idea based on what I've been thinking about and what others have been suggesting in this thread. The message system looks much simpler than this one though, it uses the basic strategy pattern:
interface Message
class SystemMessage implements Message
class PrivateMessage implements Message
class VisitorMessage implements Message
class ShoutboxMessage implements Message
class Email implements Message
What do you think? Is there a way I can make it better? I hope you dont get overwhelmed by this, I do tend to think about problems in a sophisticated way at times and sometimes its even inefficient.