Tips on how to do this?

I need to control up to 50 LEDs from a computer, and possibly tri-color LEDs, meaning about 150 different pins to control. I really have no clue where to start, so thought I might post here to see if anyone has any ideas.

Using an Arduino as an intermediary between the LEDs and computer would be fine.

I'm programming savvy, and hope to eventually use Python as the controller language.

Anyone have any thoughts?

That number of LEDs almost mandates the use of multiplexing.
Look here Arduino Playground - InterfacingWithHardware for some good examples.

What's more important to you in this project? Easy, powerful, cheap....pick one.

If you need PWM and your project cost for 50 RGB LEDs is allowed to approach $200, this is an easy and powerful option*:

A bunch of TLC5940's will give you full brightness control too, but you need about 10 chips and a LOT of wiring, plus the timing and clock distribution will become troublesome.

If you can get by without any brightness control, it's hard to go wrong with the MAX7219. If you want only one color, a single chip can do it. For RGB you'll need three chips.

* shameless self-promotion

even if it's self promotion, macegr is right, if you don't need to have all your leds in a tight matrix but you're ok for some space between each (with a diffuser on top, for exemple), blinkM are a good solution.

Very interesting suggestions. I don't mind spending a couple of bucks. The lights will be up to 20 feet apart, so proximity isn't an issue.

I'd also like to be able to drive relays for regular incandescent lights.... Is that possible with these boards?

You can drive relays with Arduino, but not directly you need so a transistor like TIP120 and a diode.

Just search the forum and playground and you will find lot's of info on hooking up relays

Thanks for all the sharing of knowledge. I ordered a BlinkM just because it looks like such an irresistably cool gizmo (if anyone wants a link, it's here, but have a feeling that I should bite the bullet and learn enough about Arduinos to use them to interface with a PC/Python to monitor inputs and control outputs.

I gather that I can set up a multiplex to have lots of inputs on just a few pins. Hopefully same with outputs.

The BlinkM will let you run a lot of lights on a single bus. You just have to program each one with an address, then talk to them individually.

The ShiftBrite above will do the same thing, except they are daisy chained so no address programming, and don't have programmable scripting on board so are a bit cheaper for a straightforward LED control app.

Very cool. I know this isn't exactly the purpose of a BlinkM, but is there a way to mod one so it can drive a relay? I'm guessing the LEDs are getting something in the range of 3.3 volts? Not the ideal voltage for a relay I know...

You would not want to run a relay on PWM. The answer is yes, you could mod a BlinkM to be an I2C-controlled relay. However, you'd need to add a driver transistor, and it's not the easiest or cheapest way to do it.

If you want to control a bunch of relays from an Arduino, the best approach is to use a simple shift register and darlington array which can be daisy chained and control 8 relays per unit. Here is a quick single-sided, through-hole design I made a while ago: