1. how to get around a UNIX system (be comfortable with emacs and/or vi, know your shell, be able to install Apache/your favourite web frame yourself on a machine
2. know basics of TCP/IP networking (know how HTTP works, be able to debug it using telnet/netcat and tcpdump/pass through proxies)
3. know databases (not just "SELECT Ajax FROM Php", but know about indices, joins and normalization/de-normalizations)
4. or more dynamic languages (Python, Perl, Ruby, Php etc...) as well statically typed as object oriented languages (Java is common for enterprise web development)
These are really just the basics (give or take). Most of these (except for databases and dynamic languages) are a standard part of any CS curriculum. Databases course should be readily available as an in-major elective. Dynamic languages -- if not available as an elective -- should be easy to pick up as you go along.
These are also very nice to have and would make you not look like a "PHP script kiddie":
* Understand how your OS works, at the least be comfortable using strace and gdb and digging around /proc and tuning sysctl/proc/kernel parameters
* Understand more about networks: more about DNS, know how a load balancer works (NAT)
* Know C/C++: that's what the extensions for your dynamic programming language are written in, that's what your web server/web proxy and database are (usually) written in.
* Know algorithms, data structures. Be able to do bitwise manipulation (e.g. how would you track on which day of a month a user visited a site?). Understand the advantage a message queue would provide, understand non-blocking I/O and threading/forking models.
* Know more about OO, meta-programming/reflection, functional languages -- be able to hack up your own ORM layer/ad-hoc MVC.
There are jobs in web development that don't even heavily touch HTML/CSS/Javascript and tend to be heavier towards algorithms, databases and UNIX hacking. These are called "back-end jobs". The other end is "front-end", which requires more familiarity with UX principles/Javascript/ActionScript/Flex and basic graphics design/layout in addition to HTML/CSS. The specific hot things (current frameworks, etc...) change but the general of computing is an invariant. The latter is what you learn in computer science classes.
Lastly, you should absolutely do programming/web-development for fun -- first, it's the way to learn things you won't learn in class (or at your first job). Secondly, many start-ups operate under the maxim of "don't hire anyone who doesn't code for fun", thirdly -- chances are, working for a web start-up won't make you a millionaire: if you don't find programming to be fun and worth your time (making long hours non-monetarily rewarding), enter a field that you would (you're lucky to be amongst the few who has the chance to choose).