Как мне показалось, грамотного ответа дано ещё не было. В 13 лет хочется конкретики, а тут всё вода типа "изучай какую-то абстрактную ерунду", а что конкретно для этого делать - непонятно.
Помню, как сам примерно в таком же возрасте просто не знал, куда обратиться за помощью, за тем, чтобы подтолкнули. Судя по описанному, автор сейчас подкован в программировании лучше, чем я в том же возрасте.
Так вот, если бы я вернулся в 13 лет, в первую очередь я участвовал бы во всевозможных олимпиадах. Но это не олимпиады а-ля Кит или школьные (или какие там ещё бывают?), которые проводятся раз в год, а всевозможные онлайн-олимпиады, проводящие соревнования каждую неделю. Это ко всему прочему ещё и интересно! И гораздо разнообразнее, чем просто читать книжку по олимпиадному программированию.
Хороший сайт с олимпиадными задачами на русском - Codeforces.com. Для решения допускаются все самые популярные языки, так что с теперешними вашими знаниями можно сразу включаться в состязания.
По теории хорошо бы изучать различные структуры данных и алгоритмы (да, тут я сам говорю "изучать какую-то абстрактную ерунду" xD). К сожалению, по этому поводу не могу ничего посоветовать кроме Никлауса Вирта "Структуры данных и алгоритмы", и то эту книгу нам советовала препод в вузе, а сам я её так и не открыл :) Но в целом вектор такой: изучать всякие списки, очереди, стеки, матрицы (это если ещё не знаете о них), устройство всевозможных деревьев (для начала бинарных деревьев поиска), классно было бы получить базовое представление о теории графов (о которой я слыхом не слыхивал до университета). А также различные алгоритмы сортировки, вещи наподобие алгоритма Кнута-Морриса-Пратта и многое-многое. Если всё-таки знакомиться с теорией графов, то там также имеется несметное количество алгоритмов.
Но совет: не стоит зачитываться теорией, все полученные знания необходимо применять на практике. Идеально: поставить себе какую-нибудь задачу, например написание того же калькулятора, но не просто +, -, *, /, а с учётом больших чисел (тут уже надо будет самому написать структуру, поддерживающую очень большие числа), с возможностью задания переменных (для их хранения можно использовать ассоциативные массивы), с учётом прямой/обратной польской записи выражения (узнать что это за записи такие и реализовать их) и со всевозможными другими фичами. Причём важно не ошибиться: задача должна быть такая, что вы не знаете на 100% её реализацию, но примерное смутное представление имеете.
И очень важно углубить свои познания в математике. То, что даётся как математика в школе - на самом деле мало чего стоит. Ближе к старшим классам конечно лучше, но с вузом не сравнить.
Что касается поступления в вуз: на данный момент (во всяком случае два года назад было так :D) ЕГЭ по информатике очень лёгкое, я думаю вы можете уже сейчас открыть задания (их можно взять например на reshuege.ru) и с лёгкостью решить большую часть. Так что при нормальной подготовке нет ничего невероятного в том, чтобы сдать на 100 баллов. Другое дело математика - её надо подтягивать и подтягивать. Но вообще: не знаю как обстоит дело в Москве, Санкт-Петербурге и т.п., а у нас в Краснодаре поступить было не сложно - куда сложнее удержаться. На студента в первую сессию валится много-много новой информации. Но об этом думать вам пока рано =)
Ну и да, конечно русский язык тоже надо знать: баллы по русскому также влияют на поступление.
Выше дали правильный совет изучать физику: во многих вузах на программистские специальности в качестве третьего экзамена рассматривают не информатику, а физику. Да и вообще знание физики лишним никак не будет.
И естественно без английского тоже никак, стоит попробовать читать про различные технологии программирования прямо на английском - сначала сложно, но вскоре становится довольно легко.
Получилось длинно, но надеюсь, что максимально подробно =)