One way to do this is to write a role-based custom WebPartManager. The following book is an outstanding book on this topic and other Web Parts topics:
Professional ASP.NET 2.0 Server Control and Component Development by Dr. Shahram Khosravi
--Dave