Hello,
The [System.DateTime]::Now method returns a DateTime structure that represents the current time. In your script, you use the DateTime property of this structure. In PowerShell, this will get you a string representing the date in text format, for example, Wednesday, August 5, 2015 3:53:36 PM.
The same is with the 'account disabled' date. $Context.TargetObject.Get($disableOn) will get you a DateTime structure representing the date when the user must be disabled. However, if you use $Context.TargetObject.Get($disableOn).DateTime, you will get a string representing the same date.
Thus, on the following line, you are comparing text strings representing the dates instead of actual dates: if ($disableDate -le $today).
To remedy the issue, remove the .DateTime part on the following lines:
$disableDate = $Context.TargetObject.Get($disableOn).DateTime
$today = [System.DateTime]::Now.DateTime
Also, [System.DateTime]::Now returns the date/time in local time, but $Context.TargetObject.Get("<DateTimeAttribute>") returns the date/time in UTC time, so your script doesn't take into account time zones. To remedy this, instead of [System.DateTime]::Now use [System.DateTime]::UtcNow:
$today = [System.DateTime]::UtcNow