If you have a method whose purpose it is to validate its arguments (for example: is this a valid username/password combination), by all means return a bool (false = invalid) plus a reason. Do not throw an exception for an expected situation (if it's not expected, why validate?)
The situation is different if you have a "Process" method: there you must have valid parameters, so it is reasonable to throw an exception (stating the problem) when they are invalid.