Faits: A.a A._ a exercé l'activité de danseuse professionnelle au service de X._ de 1987 au 31 juillet 1992. Licenciée, elle a fait contrôler son chômage dès le 2 octobre 1992. Elle a été régulièrement indemnisée par l'assurance-chômage. En parallèle, elle a donné des cours de danse notamment pour le compte de l'association Y._. Parallèlement à ces activités, A._ a créé en 1991 l'association Z._ (ci-après : l'association), inscrite au registre du commerce le 17 octobre 1995, dont elle a été la directrice et la présidente à partir du mois de décembre 1995. Le but en est notamment de produire des spectacles de danse et de dispenser un enseignement de la danse et des techniques de scène. Elle a perçu régulièrement des gains intermédiaires comme professeure de danse pour le compte de l'association et sous la forme de cachets en qualité de chorégraphe. Le 2 octobre 2002, la prénommée a présenté une demande d'indemnités de chômage à la Caisse cantonale vaudoise de chômage (ci-après : la caisse). Un sixième délai-cadre d'indemnisation lui a été ouvert. Les revenus retirés de son activité de professeure de danse ont été annoncés comme gains intermédiaires. Par décision du 30 juin 2003, la caisse a refusé le droit de l'assurée à des indemnités à partir du 1er janvier 2003, au motif qu'elle occupait une fonction dirigeante au sein de l'association et disposait d'un pouvoir décisionnel. Le même jour, la caisse a rendu une seconde décision par laquelle elle a réclamé à A._ la restitution de 6'021 fr. 20 à titre d'indemnités versées à tort dès le 1er janvier 2003. Saisi de recours formés contre ces deux décisions, le Service de l'emploi du canton de Vaud a rejeté celui portant sur la première décision le 5 décembre 2003, en considérant que l'assurée, en sa qualité de directrice artistique de l'association, jouait un rôle prédominant au sein de celle-ci et pouvait en influencer de façon déterminante les décisions. A.b A._ a déféré la décision du Service de l'emploi au Tribunal administratif du canton de Vaud. Statuant le 12 août 2005, cette juridiction a admis le recours de l'assurée et annulé la décision du Service de l'emploi du 5 décembre 2003, ainsi que la décision de la caisse du 30 juin 2003. Sur recours du Service de l'emploi, le Tribunal fédéral des assurances a annulé le jugement cantonal pour violation du droit d'être entendu et renvoyé la cause à l'autorité cantonale (arrêt du 4 septembre 2006, cause C 251/05). Le tribunal administratif était invité à donner au recourant la possibilité de s'exprimer sur les déclarations des témoins à l'audience du 13 juin 2005 et à rendre un nouveau jugement. Entre-temps (le 16 février 2004), le Service de l'emploi avait informé l'assurée que son recours contre la décision de restitution du 30 juin 2003 serait traité une fois entrée en force la décision sur le droit aux prestations. B. Après avoir procédé conformément à cet arrêt, le Tribunal administratif, statuant le 29 décembre 2006, a cette fois rejeté le recours. C. A._ a interjeté un recours de droit administratif contre ce jugement dont elle a demandé l'annulation ainsi que celle des décisions de la caisse du 30 juin 2003 et du Service de l'emploi du 5 décembre 2003. Le Service de l'emploi a conclu au rejet du recours, tandis que la caisse, l'Office régional de placement et le Secrétariat d'Etat à l'économie ont renoncé à se déterminer. 