I don't really intend this to be the accepted answer, but the problem intrigued me and I felt compelled to play with it. So maybe this will give you some ideas to move forward, in addition to the others answers.
Being more programmer than mathematician these days, I decided to approach this from a different angle: to get a Monte-Carlo approximation by building a simulation of the game. I was able to do this with about 100 lines of Java code, shown below. I didn't even try to be efficient, just to get something that would play the game many, many times, record the number of turns in each game, and spit out the average result. The hundred-million repitition cases runs in less than 20 seconds on my machine.
My results were fairly consistent at approximately $1.480$.
package info.cobaltduck.cardgame;
public class SimulateGame {
/* Representations:
* cards 1-13 are hearts
* 14-26 are diamonds
* 27-39 are spades
* 28-52 are clubs
* with each suit, the mod 13 is the rank
* 1 = Ace, 11 = J, 12 = Q, 0 = K
*/
private static int s = 0;
private static int t = 0;
// edit this higher or lower for more/less precision
private static final int HOW_MANY_GAMES = 100000000;
public static void main(String[] args) {
// play a bunch of games and record the number of turns
int[] turnsPerGame = new int[HOW_MANY_GAMES];
for (int gameCounter=0; gameCounter < HOW_MANY_GAMES; gameCounter++) {
int turnsThisGame = playSingleGame();
turnsPerGame[gameCounter] = turnsThisGame;
}
// Display the average number of turns
int total = 0;
for (int x: turnsPerGame) {
total += x;
}
double turnsAverage = (double)total / (double)HOW_MANY_GAMES;
System.out.println("The average turns per game was " + turnsAverage);
}
private static int drawFirstCard() {
int card = (int) (1 + Math.round(Math.random()*52));
return card;
}
private static int drawSecondCard(int firstCard) {
int card = firstCard;
do {
card = (int) (1 + Math.round(Math.random()*52));
}
while (card == firstCard);
return card;
}
private static int drawThirdCard(int firstCard, int secondCard) {
int card = firstCard;
do {
card = (int) (1 + Math.round(Math.random()*52));
}
while (card == firstCard || card == secondCard);
return card;
}
private static void checkForIncrementS(int card) {
if (card % 13 == 0 || card % 13 > 10) {
s++;
}
}
private static void checkForIncrementT(int card) {
if (card % 13 == 1) {
t++;
}
}
private static void doSingleTurn() {
int firstCard = drawFirstCard();
if (firstCard <= 26) { // red
checkForIncrementS(firstCard);
checkForIncrementT(firstCard);
}
else { // black
if (s > 0) {
s--;
}
else if(t > 0) {
t--;
int secondCard = drawSecondCard(firstCard);
int thirdCard = drawThirdCard(firstCard, secondCard);
checkForIncrementS(secondCard);
checkForIncrementT(secondCard);
checkForIncrementS(thirdCard);
checkForIncrementT(thirdCard);
}
}
}
private static int playSingleGame() {
int turnCount = 0;
do {
doSingleTurn();
turnCount++;
}
while (!(s == 0 && t == 0));
return turnCount;
}
}