Here's what I'd do:
Run ldd /usr/bin/Xorg
You should get a line that looks like this:
libz.so.1 => /usr/lib/libz.so.1 (0xb7357000)
If ldd claims that it can't resolve what file libz.so.1 is in, then uninstall and reinstall zlib:
pacman -R -f zlib
pacman -S zlib
If ldd can find a specific libz.so.1, then check to see if that file constitutes a broken symbolic link:
ls -l /usr/lib/libz.so.1
(Or whatever ldd told you that libz.so.1 resolves to).
On my Arch boxes, /usr/lib/libz.so.1 is a symbolic link of libz.so.1.2.6 . If /usr/lib/libz.so.1 links to some weird place, like a home directory, track down why - that shouldn't happen.
Ensure that whatever file that ldd resolves libz.so.1 to actually exists, and has contents. I get this:
261 % file libz.so.1.2.6
libz.so.1.2.6: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xb32fb568a025a99ed67220243b487b93ae8ef948, stripped
If the link exists, but the linked-to libz.so.1.2.6 doesn't exist, perhaps you can do the two pacman command sequence above and get everything back. I guess I'd advise against just doing the two pacman commands, until you understand what's going on. Something must have changed, unless this is a new installation, and somehow the zlib package didn't get installed.
useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash username cp /etc/skel/.xinitrc ~/.xinitrccreate a user and add that user to the default groups and do a startx. don't start x with root. Try if that works. – user14039 Mar 9 '12 at 3:25