I second Michael Gauthier's thoughts.
Here are some more:
* I'd phase out OS-specifics into a driver architecture, e.g.:
* PEAR_Exception should be included from the Exception file (PEAR.php is not necessary.)
* simplify if/else where possible (e.g., when you throw in an if, you need no else)
* I'd like to see less public variables and (maybe) __get/__set instead.
* Your tests should be added to a "tests/" dir and also in package.xml (role="test"), see other packages for examples.
* Log should be an optional dependency
I also find the "usePEAR" stuff rather misleading, is this necessary since you are proposing to PEAR? I am not sure why all those conditionals are in the code. For example, you have code checking for exception classes, etc.. I would just make sure it loads them properly ("require_once 'System/Os/Exception.php';") and be done with it.