I have four copies of 'win32ole.so' on my system.
The 'watir' versions are different than the 'ruby' versions.

ak@IPON ~> ls -l /lib/ruby/1.8/i386-cygwin/win32ole.so
-rwxr-x---+ 1 ak Users 64000 Sep 30 06:25 /lib/ruby/1.8/i386-cygwin/win32ole.so*
ak@IPON ~> ls -l /lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32ole/win32ole.so
-rwxrwxrwx 1 ak Users 65622 Jan 29 14:24 /lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32ole/win32ole.so*
ak@IPON ~> ls -l /usr/lib/ruby/1.8/i386-cygwin/win32ole.so
-rwxr-x---+ 1 ak Users 64000 Sep 30 06:25 /usr/lib/ruby/1.8/i386-cygwin/win32ole.so*
ak@IPON ~> ls -l /usr/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32ole/win32ole.so
-rwxrwxrwx 1 ak Users 65622 Jan 29 14:24 /usr/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32ole/win32ole.so*

I tried to copy the 'ruby' version into the 'watir' directories, to see if that would make a difference.
When I re-ran the IRB test, here is the error message I got...

ak@IPON ~/watir> irb
>> require 'watir'
=> true
>> x = Watir::IE.new
RuntimeError: LoadLibrary: \usr\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\IEDialog\Release\IEDialog.dll

from /usr/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32.rb:6:in `initialize'
from /usr/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32.rb:6:in `new'
from /usr/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/win32.rb:6
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/ie.rb:70
from (irb):2
>>