" Depende "
Eu não sei sobre Java, mas em .net (C #, VB.net ...) geralmente não é necessário atribuir um nulo quando você não precisa mais de um objeto.
No entanto, observe que "geralmente não é necessário".
Ao analisar seu código, o compilador .net faz uma boa avaliação do tempo de vida da variável ... para dizer com precisão quando o objeto não está mais sendo usado. Então, se você escrever obj = null, pode parecer que o obj ainda está sendo usado ... neste caso, é contraproducente atribuir um nulo.
Existem alguns casos em que pode realmente ajudar atribuir um nulo. Um exemplo é que você tem um código enorme que é executado por um longo tempo ou um método que está sendo executado em uma thread diferente ou algum loop. Nesses casos, pode ser útil atribuir nulo para que seja fácil para o GC saber que não está mais sendo usado.
Não existe uma regra rígida e rápida para isso. Indo pelo acima, coloque atribuições nulas em seu código e execute um criador de perfil para ver se isso ajuda de alguma forma. Muito provavelmente você não verá um benefício.
Se for um código .net que você está tentando otimizar, então minha experiência tem sido que cuidar bem dos métodos Dispose e Finalize é na verdade mais benéfico do que se preocupar com nulos.
Algumas referências sobre o tema:
http://blogs.msdn.com/csharpfaq/archive/2004/03/26/97229.aspx
http://weblogs.asp.net/pwilson/archive/2004/02/20/77422.aspx