After hours of wondering why my code kept reporting scheduling conflicts when I could see events did not overlap I discovered a VERY important note in MSDN on the SPQuery page.
…DID YOU KNOW…
When SPQuery is used to check values against a DateTime field it only checks the Date portion by default? In order to make SPQuery include a time check you must include IncludeTimeValue=’TRUE’ in the Value tag.
<Value Type=’DateTime’ IncludeTimeValue=’TRUE’><Today/></Value>