If possible take a look at the original raw data. For calendar events, right click on the event and go to "Show Original" either under the "Series" or "Instance".
Specifically, look for DTSTART;TZID and DTEND;TZID between events that are "displaying" correctly and those which are not.
Here are my outputs from two difference calendar events:
#1
DTSTART;TZID="America/New_York":20110125T120000
DTEND;TZID="America/New_York":20110125T130000
#2
DTSTART;TZID="America/Phoenix":20110125T100000
DTEND;TZID="America/Phoenix":20110125T103000
#1 event is using NY as its timezone and before daylights savings occured at 9AM(Phoenix time) , #2 is using Phoenix at its time zone and occurs at 10AM(Phoenix time) before daylight savings.
After daylight savings took effect, #1 moved to 10AM(Phoenix time) and #2 stayed put. Arizona does not use daylight savings and is the reason why #2 did not change.
If your event only has DTSTART and DTEND, then timezone is not declared. The date value will either be "floating" or based on UTC.
An example of a floating date value: 20110125T103000. Where as a date value based on UTC will have a Z appended to the end: 20110125T103000Z
I hope this helps.
Good Luck.
REFERENCE:
http://www.ietf.org/rfc/rfc2445.txt