Sorry I have not had to denormalize yet but ofcourse it makes sense. Cons are that it will definately make organising your data harder and ofcourse there will be repetition of data. But drivespace is cheaper than horsepower 🙂
But 500,000 rows is peanuts really 😉 Proper databases should handle millions of records and still get speedy results if indexing and joins are done right.
Sorry I dont have all-ending and definite answer so keep on searching for the right answer.
If I were you, I would definately look into caching data as much as possible. Memcached would be very good to use as you can add as many memcached servers as you want when your application grows.