Un array de Object lleno de objetos de la clase X no es lo mismo que un array de X, y por eso no se puede hacer el casting.
Una solución es crear el nuevo array con la longitud que queramos y usar el metodo arraycopy para pasar los elementos del antiguo al nuevo:
http://java.sun.com/j2se/1.4.2/docs/...,%20int,%20int)
Otras soluciones "genericas" implican usar Reflection.
S!