Why wouldn't it be slow? Integers in Haskell are implemented with GMP, and the representation is simply a sign, a magnitude (number of bits) and then all of the bits. http://gmplib.org/manual/Integer-Internals.html
10^(10^10) is a very large number. With the representation that GMP uses, it will take at least 3.86 GB of RAM to represent the bits required by the result! Of course it takes ages to work with numbers of that magnitude.
h> ((10^10) * logBase 256 10) * (2**(-30))
3.8672332825224878
It is possible to encode values like this, but there's nothing that ships with Haskell Platform that'll do it efficiently. You might look at the numbers package though.
h> import Data.Number.BigFloat
h> ((10 :: BigFloat Eps1)^10)^10
1.e100
Note that the above example is trivial, only one digit of precision, but that's all that's needed to represent this result since BigFloat is base 10.