Set your DNS TTL very low.
Add a DNS entry for your new server as ww2.yourdomain.com
On new server set up apache as SERVER NAME
www.yourdomain.com / SERVER ALIAS ww2.yourdomain.com
On old server set up .htaccess redirect to redirect everything to www2.yourdomain.com
Change dns so that
www.yourdomain.com points to your NEW server
This means that anything that sees the NEW IP address will just read off the new server, anything that sees the OLD IP address will read a redirect to ww2 from the old server which will force a query to find ww2 from DNS.
Leave this all in place for a few days and then remove the ww2 entries.
As with anything DNS based, your mileage may vary and some users may experience an outage, it's just an unfortunate effect that some DNS servers do not respect standards with regards to TTL.